Olá, vou falar de um assunto básico, mas que pode melhorar seu código, deixando mais simples e legível.
Primeiro compare os códigos abaixo:
if condição then var := x else var := y;
var := ifthen(condição, x,y);
Em qual deles a leitura e manutenção parece mais fácil?
Pesquisei sobre esse assunto na internet e achei algumas coisas, mas vou falar da forma que conheço…
Para começar, no Delphi(eu uso 7 e 2006) nós temos esse operador condicional em forma de function implementado nas units:
- SWSystem – iif
- StrUtils – ifthen
- Math – ifthen
Sendo que o iif retorna string ou integer, e o ifthen retorna string se for o da unit StrUtils ou um valor numérico(integer, Double) se for da unit Math.
O que podemos fazer e que facilitaria mais o nosso trabalho seria criar um IF ternário que retornasse variant, assim poderíamos tratar qualquer tipo de dado com uma única função:
Function ifthen(cond: boolean; aTrue: variant; aFalse: variant): variant; begin if cond then Result := aTrue else Result := aFalse; end;
Conclusão:
Realmente, é um procedimento básico mas que torna nosso código menor e mais limpo. Lembro também que o uso de if ternário não tem impacto na performance da aplicação, até porque a function executa um if/then/else do mesmo jeito.
Até mais…
Willian Rodrigues
Olá
Willian, tive esta mesma dificuldade. Sei que o post é antigo, mas como está na web, sempre é bom compartilhar as soluçoes.
Para usar um IFTHEN onde o resultado que precisava era um booleano.
Utilizei como alternativa o seguinte:
variavel_booleana := StrToBool( ifthen( condição , ‘True’, ‘False’) );
Espero que seja util para alguem que procure a mesma solução.