INSTITUCIONAL
COMUNIDADE
BLOG
AJUDA
MINHA CONTA
EN PT ES

expressions 284

Funcionalidades que incrementam a produtividade na GeneXus X (II): tipo de dado Expression.

Expression é um novo tipo de dado que foi incorporado à nova versão. Veja como trabalhar com eles para incrementar a produtividade com a GeneXus X.
Expression é um novo tipo de dado presente na GeneXus X que avalia fórmulas e expressões em tempo de execução, e que podem ser construídas pelo próprio usuário ou analista do negócio.

Passos a seguir em nosso código para utilizar este tipo de dado:

• Primeiro, define-se uma variável de tipo Expression (&exp01), indicando a fórmula ou expressão que se deseja avaliar, neste caso a*b+c, atribuindo na variável de tipo caractere &exp01Expression a mencionada atribuição.

Para definir uma Expression é possível utilizar uma combinação de operadores aritméticos, relacionais e operandos, bem como é permitido o uso de procedimentos GeneXus (desde que observem determinadas estruturas de entrada/saída)
 
1)
&exp01Expression = "a*b+c"
&exp01.Expression = &exp01Expression







• Como segundo passo, devemos atribuir valores aos operandos da mencionada fórmula, neste caso notar que deverá se atribuir o valor correspondente aos operandos a, b e c . Suponhamos que os valores que se precisam avaliar se encontram nas variáveis &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() )










• Temos tudo o que precisamos para poder realizar efetivamente a avaliação, para isso utiliza-se o método Evaluate da seguinte forma:

3)
&Result = &exp01.Evaluate()








O resultado fica na variável &Result.

Dado que a expressão é atribuída e avaliada em tempo de execução, é importante checar possíveis erros utilizando as propriedades ErrCode e ErrDescription. Por exemplo:
 
4)
If &exp01.ErrCode = 0
// Execution OK!
else
// an error occured
EndIf








Seguindo com o exemplo a partir dos operandos a,b,c carregados à variável Expression seria possível atribuir qualquer tipo de expressão e avaliá-la de novo dinamicamente, sem tocar sequer uma linha de código da aplicação! Eis alguns exemplos que seria possível avaliar:
 
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)"









Também poderá definir expressões que utilizem diferentes operandos, leve em conta que deverá carregar os valores associados antes de utilizar o método Evaluate como foi detalhado no passo 2.

Em termos gerais, caso precise avaliar uma expressão em tempo de execução, leve em conta a existência do tipo de dado Expression; só precisa definir a expressão que deseja avaliar, carregar seus respectivos operandos e avaliá-la.
 

GeneXus X produtividade.

Várias funcionalidades tornam possível programar menos e declarar mais, bem como reutilizar o código gerado. Além disso, o incremento da usabilidade, a integração e a automação fazem o desenvolvimento mais simples, mais eficaz e produtivo.

Veja no Wiki da comunidade outras funcionalidades que incrementam a produtividade.
Relacionado
A GeneXus X incrementa a produtividade de desenvolvimento com Data Providers e Data Seletor
How to Expressões Regulares
Especial #GeneXusOMelhorDe2014 :: Cloud Computing, Internet das Coisas, GeneXus X Evolution 3, Casos de Sucesso, Smart Devices e... Muitos mais!
Apps móveis: a chave para o crescimento de uma PME
Beacons: um olhar para o futuro do marketing tecnológico
#GX25 #Call4Speakers Nada mais, nada menos que 25 Encontros GeneXus
Avianca, a companhia aérea oficial do #G25 oferece descontos especiais para voos internacionais
A Comunidade GeneXus #Brasil organiza uma excursão partindo de Porte Alegre para assistir ao #GX25
GeneXus lança no SAP Forum Brasil GeneXus Early Adopter Program for SAP HANA Cloud Platform
GeneXus X Evolution 3 Upgrade 7
Novos parceiros acadêmicos no Brasil!