Bazı dillerde, yapabilirsiniz
$a = $b OR $c OR die("no value");
Yani, OR olacak kısa devre, gerçek bir değeri buluncaya kadar sadece soldan sağa doğru değerleri değerlendirilmesi. Ancak ek olarak, sadece true
karşı değerlendirilmiştir the gerçek değeri verir.
Yukarıdaki örnekte, PHP, $a
değeri olacaktır 1
if ya $a
veya $b
non-yanlış değerler, veya o olacak die
.
Bu yüzden olarak kullanılmak üzere bir işlev first
, yazıldı
$a = first($a, $b, die("no value"));
value ya $a
ya da döndürür $b
. Ancak, kısa devre değil - bu olacak zaman die
.
Is there a short-circuit OR
gerçek değerini döndürür PHP? B>
Edit: Some good answers for the example I gave, but I guess my example isn't exactly what I meant. Let me clarify.
$a = func1() OR func2() OR func3();
Bu fonksiyonların her bir really really intense hesaplama yapar, bu yüzden sadece en bir kez, her ifadeyi değerlendirmek istediğiniz yere. Ve gerçek bir değer dönmek için ilk kez, ben gerçek değeri $a
saklanabilir istiyorum.
Çünkü olmaz kısa devre I, biz bir işlevi yazma ekarte düşünüyorum. Ve koşullu operatör cevabı iki kez ifade değerlendirmek olacaktır.