Pergunta

Acabei de encontrar isto no github.

 ($config === NULL) and $config = Kohana::config('email');

É o equivalente a

if ($config === NULL) {
    $config = Kohana::config('email');
}

Isso é comum? Eu esperaria que outros desenvolvedores olhem para o meu código se eu usasse a primeira maneira de saber instantaneamente o que estava fazendo?

Foi útil?

Solução

Levei um segundo para obtê -lo, mas isso deve funcionar em quase todas as linguagens de programação. Como os operadores "e" ou "ou" são avaliados preguiçosamente, se a declaração à esquerda for falsa, não há necessidade de avaliar o restante das declarações, porque toda a expressão sempre será falsa (falsa e verdadeira é falsa). Da mesma forma, você pode fazê -lo com "ou", mas a declaração à esquerda teria que ser verdadeira, então a à direita não ser avaliado.

PS: Nesse caso, não importa que o que está à direita não seja realmente uma expressão booleana; Isso apenas assumirá o valor da verdade de $config

Outras dicas

E é um operador lógico de PHP.

($config === NULL) and $config = Kohana::config('email');

tem resultado equivalente (mas tem um menor operador precedente) para

($config === NULL) && $config = Kohana::config('email');

Pessoalmente, para evitar qualquer confusão, eu usaria sua segunda abordagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top