Mostrando las entradas con la etiqueta if. Mostrar todas las entradas
Mostrando las entradas con la etiqueta if. Mostrar todas las entradas

domingo, 12 de septiembre de 2021

Operadores ternarios en C#

Los operadores ternarios, en pocas palabras, son abreviaturas de una sentencia IF devolviendo un único resultado; es decir, que abreviaremos una sentencia IF de la cual se desprenda un resultado cuando el valor evaluado es TRUE y otro valor cuando cuando el valor evaluado es FALSE.

La representacion estandar de una sentencia IF simple con devolucion de valores sería la siguiente:

int resultado = 0;

if(x == "si")

    resultado = 1;

else

    resultado =0;

La expresión anterior se podría reducir con un operador ternario de la siguiente forma:

int resultado = x == "si" ? 1 : 0;

La forma de entender lo anterior es la siguiente:

  1. int resultado = Ésto quiere decir que el resultado de la operacion ternaria se almacenara en la variable de tipo entero llamada "resultado"
  2. x == "si" ? Ésta sección es donde se establece el criterio de evaluación, es decir, lo que va entre parentesis de nuestra sentencia IF estandar
  3. 1 Resultado cuando el criterio de evaluacion es verdadero (true)
  4. : Representa la palabra reservada else
  5. 0 Resutlado cuando el criterio de evaluación es falso (false)

Es decir que cuando se cumpla el criterio que se encuentra antes del simbolo de interrogación (?), nuestro operador ternario devolverá el valor que se encuentra antes de los dos puntos (:), y si el criterio no se cumple, nuestro operador devolverá el valor que se encuentra despues de los dos puntos (:).

Sin embargo ésta no es la única representación ternaria existente... imaginemos que tenemos el siguiente modelo de sentencia IF:

string resultado = null;

if(x == "si")

    resultado = "hola mundo";

En el modelo anterior vemos que cuando el criterio de evaluación NO se cumple (es decir que da como resultado un valor false), se está manteniendo un valor null (el cual ha sido asignado como valor inicial a nuestra variable "resultado"), en éste caso el operador ternario resultante es mas sencillo:

int resultado = x == "si" ?? "hola mundo";

La forma de entender lo anterior es la siguiente:

  1. int resultado = Ésto quiere decir que el resultado de la operacion ternaria se almacenara en la variable de tipo entero llamada "resultado"
  2. x == "si" ?? Ésta sección es donde se establece el criterio de evaluación, es decir, lo que va entre parentesis de nuestra sentencia IF estandar
  3. "hola mundo" Resultado cuando el criterio de evaluacion es verdadero (true)

Como  podemos observar, en éste caso el operador es mas compacto, debido a que solo devolverá un resultado (cuando el criterio de evaluación de como resultado true), si el criterio no se cumple (es decir que da como resultado false) entonces se asignará el valor null.

martes, 13 de octubre de 2015

"IF" Ternario en power builder

Si llevas algo de tiempo desarrollando en powerbuilder (y si has desarrollado antes en lenguajes como c++, c# o php) te habrás dado cuenta que en power builder no existe un IF ternario, es decir, el IF que se puede hacer en una sola linea estableciendo la CONDICION, el valor a devolver si la condicion es VERDADERA y el valor a devolver si la condición es FALSA... en c# un if ternario sería algo como esto:

integer i;
i = (a == true ? 1 : 0 );

Donde si el valor de la variable a es TRUE entonces i tomará el valor 1, de lo contrario i tomaría el valor 0... estos if ternarios ahorran bastante código, pero como mencioné anteriormente, en power builder no existe.... sin embargo emular el comportamiento de éste if ternario no es nada difícil, solo necesitamos crear un objeto "funcion"(que sería lo que llamamos una función global, accesible en cualquier momento), dicha función deberá devolver un valor de tipo ANY(en otro post hablare un poco mas a fondo de este tipo de variable) y tendrá como parámetros un boleano (el cual obtendría su valor de la condición del if) y dos variables de tipo ANY ; el cuerpo de la función es bastante sencillo:

if(condition)then
return true_value
else
return false_value
end if

Suponiendo que la función la llamamos "ift", para usarla haríamos algo como esto:

integer i
i = ift(a = true, 1, 0)

Ésta línea haría lo mismo que si escribiéramos:

integer i

if a= true then
    i = 1
else
    i = 0
end if

Como podemos ver, el ahorro de código es bastante significativo, como un PLUS de seguridad para que no nos marque alguna clase de error, podemos realizar un CAST del resultado para convertirlo de tipo ANY al tipo específico que esperamos obtener, es decir:

integer i
i = integer(ift(a = true, 1, 0))

Patrones de Diseño de Software

Lo más visto