Ele avalia o operando esquerdo se o operando esquerdo é verdadeiro e o operando direito, caso contrário.
No pseudocódigo,
foo = bar ?: baz;
resolve aproximadamente a
foo = bar ? bar : baz;
ou
if (bar) {
foo = bar;
} else {
foo = baz;
}
com a diferença que bar
será avaliada apenas uma vez.
Você também pode usar isso para fazer uma "autoavaliação", foo
conforme demonstrado no exemplo de código publicado:
foo = foo ?: bar;
Isso atribuirá bar
a foo
if foo
é nulo ou falsey, caso contrário, ele foo
permanecerá inalterado.
Mais alguns exemplos:
<?php
var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
?>
By the way, é chamado o operador Elvis .
null
ou qualquer coisa. Apenas dizendo