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))

No hay comentarios.:

Patrones de Diseño de Software

Lo más visto