Jak niektórzy ludzie wiedzą, C# ma bardzo przydatny operator ??
, który ocenia i zwraca wyrażenie po prawej stronie, jeśli wyrażenie po lewej stronie ma wartość null. Jest to bardzo przydatne dla domyślnych wartości, na przykład:PHP i ?? operator
int spaces = readSetting("spaces") ?? 5;
Jeśli readSetting
nie mógł znaleźć "spaces"
i zwraca null, zmienna spaces
będzie posiadać wartość domyślną 5
.
Można zrobić prawie to samo w JavaScript i Ruby z ||
operatora, jak w
var spaces = readSetting("spaces") || 5;
chociaż nie można mieć 0
jako wartości spaces
w JavaScript w tej sprawie oraz false
zarówno w Ruby i JavaScript .
PHP ma or
operatora i mimo to nie działa jak ||
w tym sensie, że nie zwraca wyrażenie z prawej strony, to nadal może być użyteczne tutaj:
$spaces = readSetting('spaces') or $spaces = 5;
z Zauważ, że ""
i "0"
są również traktowane jak false
w PHP, oprócz false, 0
i null
w większości języków.
Pytanie brzmi, czy powinienem użyć konstrukcji z góry? Czy ma efekty uboczne oprócz traktowania dużej klasy postaci jako fałszywej? I czy istnieje lepsza konstrukcja, która jest zazwyczaj używana i zalecana przez społeczność PHP w tym zadaniu?
Nie widzę żadnego odniesienia do: w połączonej artykułu. –