Evalúa el operando izquierdo si el operando izquierdo es verdadero , y el operando derecho de lo contrario.
En pseudocódigo,
foo = bar ?: baz;
aproximadamente resuelve a
foo = bar ? bar : baz;
o
if (bar) {
foo = bar;
} else {
foo = baz;
}
con la diferencia que bar
solo se evaluará una vez.
También puede usar esto para hacer una "autocomprobación" de foo
como se demuestra en el ejemplo de código que publicó:
foo = foo ?: bar;
Esto asignará bar
a foo
si foo
es nulo o falsey, de lo contrario se dejará foo
sin cambios.
Algunos ejemplos más:
<?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'
?>
Por cierto, se llama el operador de Elvis .
null
o cualquier cosa. Solo