4D v15 R2

Choose

  •  
 
4D v15 R2
Choose

Choose 


 

Choose ( critère ; valeur {; valeur2 ; ... ; valeurN} ) -> Résultat 
Paramètre Type   Description
critère  Booléen, Entier in Valeur à tester
valeur  Expression in Valeurs possibles
Résultat  Expression in Valeur de critère

O comando Choose retorna um dos valores passados nos parâmetros valor1, valor2, etc. em função do valor do parâmetro criterio.


Pode passar um parâmetro criterio de tipo booleano ou numérico:

  • Se criterio for um booleano, Choose retorna valor1 se o booleano é igual a True e valor2 se o booleano é igual a False. Neste caso, o comando espera exatamente três parâmetros: criterio, valor1 e valor2.
  • Se criterio for um inteiro, Choose retorna o valor cuja posição corresponde a criterio. Atenção, a numeração dos valores começa em 0 (a posição de valor1 é 0). Neste caso, o comando espera ao menos dois parâmetros: criterio e valor1.


O comando aceita todo os tipos de dados para o/os parâmetro(s) valor, exceto imagens, ponteiros, BLOBS e arrays. Entretanto, deve ter certeza de que todos os valores passados sejam do mesmo tipo, 4D não realizará nenhuma verificação neste ponto.

Se nenhum valor corresponde ao critério, Choose retorna um valor “nulo” relativo ao tipo do parâmetro valor (por exemplo, 0 para o tipo numérico, “” para o tipo string, etc.).

Este comando permite gerar código conciso que substitui os testes de tipo “Case of” que ocupam várias linhas (ver exemplo 2). Também é muito útil nos lugares onde podem ser executadas fórmulas: editor de pesquisas, aplicar uma fórmula, editor de relatórios rápidos, coluna calculada de listbox, etc.

Este é um exemplo do uso típico deste comando com um critério de tipo booleano:

 vTitulo:=Choose([Pessoa]Masculino;"Sr";"Sra")

Este código é estritamente equivalente a:

 If([Pessoa]Masculino)
    vTitulo:="Sr"
 Else
    vTitulo:="Sra"
 End if

Este é um exemplo do uso típico deste comando com um critério de tipo numérico:

 vEstado:=Choose([Pessoa]Estado;"Solteiro";"Casado";'"Viúvo";"Separado")

Este código é estritamente equivalente a:

 Case of
    :([Pessoa]Estado=0)
       vEstado:="Solteiro"
    :([Pessoa]Estado=1)
       vEstado:="Casado"
    :([Pessoa]Estado=2)
       vEstado:="Viúvo"
    :([Pessoa]Estado=3)
       vEstado:="Separado"
 End case