Ben üçlü operatörler hayranıyım bir ifadenin sonucuna dayalı bir değişkene bir değer atama çok yaygın durumda:
$foo = $bar ? $a : b;
$ Bar nispeten pahalı bir işlemdir ve ben sonuç truthy ise $ foo için $ bar sonucunu atamak istiyorsanız Ancak, bu verimsiz:
$foo = SomeClass::bigQuery() ? SomeClass::bigQuery() : new EmptySet();
Bir seçenek:
$foo = ($result = SomeClass::bigQuery()) ? $result : new EmptySet();
Ama doğrusu fazladan $result
bellekte oturan olurdu değil.
Elimdeki en iyi seçenek:
$foo = ($foo = SomeClass::bigQuery()) ? $foo : new EmptySet();
Ya da, üçlü operatörler olmadan:
if(!$foo = SomeClass::bigQuery()) $foo = new EmptySet();
Ya da, eğer program akış operatörleri tarzı değildir:
($foo = SomeClass::bigQuery()) || ($foo = new EmptySet());
O kadar çok seçenek, onları sigara gerçekten tatmin edici. Hangi kullanmak istiyorsunuz, ve ben burada gerçekten belirgin bir şey eksik?