INSTITUCIONAL
COMUNIDAD
BLOG
AYUDA
MI CUENTA
EN PT ES

expressions 284

Funcionalidades que incrementan la productividad en GeneXus X (II): tipo de dato Expression.

Expression es un nuevo tipo de dato que se agregó en la nueva versión. Vea como trabajar con los mismos para incrementar la productividad al trabajar con GeneXus X.
Expression es un nuevo tipo de dato presente en GeneXus X que evalúa fórmulas y expresiones en tiempo de ejecución, donde las mismas pueden ser construidas por el propio usuario o analista del negocio.

Pasos a seguir en nuestro código para utilizar este tipo de dato:

• Primero se define una variable de tipo Expression (&exp01), indicando la fórmula o expresión que se quiere evaluar, en este caso a*b+c, asignado en la variable de tipo carácter &exp01Expression dicha asignación.

Para definir una Expression se puede utilizar una combinación de operadores aritméticos, relacionales y operandos, así como también se permite el uso de procedimientos GeneXus (siempre que sigan determinada estructura de entrada/salida).
 
1)
&exp01Expression = "a*b+c"
&exp01.Expression = &exp01Expression







• Como segundo paso debemos asignar valores a los operandos de dicha formula, en este caso notar que a los operandos a, b y c deberán asignarle el valor correspondiente. Supongamos que los valores que se necesitan evaluar se encuentran en las variables &int1, &int2, &int3:
 
2)
&int1 = 1.11
&int2 = 2.22
&int3 = 3.33
&exp01.Variables.Set( "a", &int1.ToString() )
&exp01.Variables.Set( "b", &int2.ToString() )
&exp01.Variables.Set( "c", &int3.ToString() )










• Se tiene todo lo necesario para poder realizar efectivamente la evaluación, para ello se utiliza el método Evaluate de la siguiente manera:

3)
&Result = &exp01.Evaluate()








El resultado queda en la variable &Result. Debido a que la expresión se asigna y evalúa en tiempo de ejecución es importante chequear posibles errores utilizando las propiedades ErrCode y ErrDescription. Por ejemplo:
 
4)
If &exp01.ErrCode = 0
// Execution OK!
else
// an error occured
EndIf









Siguiendo con el ejemplo a partir de los operandos a,b,c cargados a la variable Expression se podría asignar cualquier tipo de expresión y evaluar dinámicamente nuevamente la misma ¡Sin tocar ni una línea de código de la aplicación! Algunos ejemplos que podrían evaluarse son:
 
5)
&exp01Expression = "-a*(-b+c)"
&exp01Expression = "a*(b+c)/100"
&exp01Expression = "1+2*3+a*(b+c)/4"
&exp01Expression = "log( a * b + c)"
&exp01Expression = "abs( a * b + c)"
&exp01Expression = "iif( a < b , a , c)"










También podrá definir expresiones que utilicen diferentes operandos, tenga en cuenta que deberá cargar los valores asociados antes de utilizar el método Evaluate como se detalló en el paso 2.

En términos generales, si necesita evaluar una expresión en tiempo de ejecución tenga en cuenta la existencia del tipo de dato Expression; sólo necesita definir la expresión a evaluarse, cargar sus respectivos operandos y evaluarla.
 

GeneXus X productividad

Varias funcionalidades hacen posible programar menos y declarar más, así como reutilizar el código generado. Además, el incremento de la usabilidad, la integración y la automatización hacen el desarrollo más simple, más eficaz y productivo.

Vea en el Wiki de la comunidad otras funcionalidades que incrementan la productividad.
Relacionado
GeneXus X incrementa la productividad de desarrollo con Data Providers y Data Selector
How to Expresiones Regulares
Uruguay centraliza toda la información sobre comercio exterior e inversiones en Siicex, un portal desarrollado en GXportal y GeneXus
Curso de Seguridad en aplicaciones GeneXus
GeneXus X Evolution 3 Upgrade 2 Preview 3
GXquery 4.0 Upgrade 3 ¡Liberado!
LightCRM App para Windows Phone, Android e iOS desarrollada con GeneXus X Evolution 3 ¿La probaste?
¡919 certificados GeneXus! #GeneXusLoMejorDe2014
¡64 novedades en GeneXus MarketPlace!#GeneXusLoMejorDe2014
¡33 nuevas apps en el GeneXus ShowCase!#GeneXusLoMejorDe2014
¡23 Casos de éxito! #GeneXusLoMejorDe2014
Certificación SAP con GeneXus ERP Connector and Explorer #GeneXusLoMejorDe2014
GeneXus Cloud Computing #GeneXusLoMejorDe2014
Internet de las cosas #IoT #GeneXusLoMejorDe2014
2014 el año de GeneXus X Evolution 3 #GeneXusLoMejorDe2014