Se
Em computação, IIf é uma função presente em diversas edições da linguagem de programação Visual Basic e da linguagem de marcação ColdFusion (CFML), bem como em planilhas eletrônicas, que retorna o segundo ou terceiro parâmetro com base na avaliação do primeiro parâmetro. É um exemplo de expressão condicional, que é similar a uma instrução condicional.
Imagem: Doy luz, por reflejar · BY-NC-ND · Openverse
Muitas linguagens possuem um operador para atingir o mesmo propósito, geralmente chamado de operador condicional (ou, menos precisamente, operador ternário); o mais conhecido é ?:, usado em C, C++ e linguagens relacionadas. Alguns dos problemas com a função IIf, como discutido posteriormente, não existem com um operador condicional, porque a linguagem tem a liberdade de examinar o tipo e adiar a avaliação dos operandos, em vez de simplesmente passá-los para uma função de biblioteca.
Imagem: ucooperativadecolombia · BY-NC-ND · Openverse
Estes exemplos avaliam expressões matemáticas e retornam uma de duas strings, dependendo do resultado.
Imagem: ucooperativadecolombia · BY-NC-ND · Openverse
Eficiência
Como IIf é uma função de biblioteca, ela sempre exigirá a sobrecarga de uma chamada de função, enquanto um operador condicional provavelmente produzirá código embutido. Além disso, o tipo de dados de seus argumentos é Variant. Se a função for chamada com argumentos de outros tipos (variáveis ou literais), haverá uma sobrecarga adicional para convertê-los para Variant. Também pode haver sobrecarga adicional para verificar os tipos dos argumentos e converter um deles caso não sejam do mesmo tipo. Outro problema com o IIf surge porque é uma função de biblioteca: ao contrário do operador condicional derivado de C, tanto a parte verdadeira quanto a parte falsa serão avaliadas, independentemente de qual delas for retornada. No trecho de código a seguir:
Imagem: ucooperativadecolombia · BY-NC-ND · Openverse
Em Visual Basic, IIf não é a única maneira de avaliar e executar ações com base em se uma expressão é verdadeira ou falsa. Também poderia ser escrito da seguinte forma, usando condicionais padrão: O exemplo acima também eliminaria o problema de IIf avaliar seus parâmetros truepart e falsepart simultaneamente. O Visual Basic 2008 (VB 9.0) introduziu um operador condicional verdadeiro, chamado simplesmente de "If", que também elimina esse problema. Sua sintaxe é semelhante à da função IIf:
Imagem: ucooperativadecolombia · BY-NC-ND · Openverse
A função $iif() está presente no script mIRC, com sintaxe semelhante. Chamar /testiif imprimirá "testando $iif: 1 execução(ões)". O $iif do mIRC se comporta mais como o ?: do C do que o IIf() do VB, já que não pré-avalia ambos. IIF() é uma função presente no dBase e no xBase (versões de 1992 e anteriores). A função `iif()` também é uma função mágica do compilador Oxygene. Ela não é uma função real e, em tempo de compilação, é desdobrada em instruções condicionais. Neste exemplo, uma nova cadeia de tipo forte chamada "someString" é criada (usando inferência de tipo) e a função IF irá preenchê-la dependendo do resultado da expressão booleana. SQL Server 2012 e mais recentes implementa a função IIF () (Transact-SQL): Se em C (e suas variantes) e Perl é o?: operador condicional:


