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))
Curiosidades, code snipets y consejos para desarrollo en .Net, PowerBuilder y bases de datos
Suscribirse a:
Comentarios de la entrada (Atom)
Lo más visto
-
Es horrible tener que modificar los colores de letras y fondos en un Datawindow en tiempo de ejecución y darte cuenta que los códigos de col...
-
En ocasiones para poder hacer procesos automáticos requerimos cierta información sobre un Datawindow, pero es frustrante cuando no encuentr...
-
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 q...
No hay comentarios.:
Publicar un comentario