&&=

Dec 07, 2007 14:33

Не уверен, что понимаю, почему в PHP нет такого оператора.

А где он есть?

проги

Leave a comment

dizzy57 December 7 2007, 15:54:43 UTC
a &&= b;
if (!b) a=false;

Второе заметно понятнее. А если еще и разрешить перегружать, то редкостная путаница начнется… Впрочм, в Ruby такой оператор есть.

Reply

ob_ivan December 7 2007, 19:04:24 UTC
Понятнее, но не эквивалентно. Что, если a = 2?

Reply

netp_npokon December 7 2007, 19:34:20 UTC
Его значение как логического выражения все равно не поменяется. А использовать логические выражения в арифметике как-то неправильно.

Reply

ob_ivan December 7 2007, 19:52:16 UTC
> А использовать логические выражения в арифметике как-то неправильно.

Да ладно, кто же типизирует логические переменные отдельно от арифметических?
И потом, может, мне надо получить именно единицу, а не какую-то там абстрактную истину.

Reply

netp_npokon December 7 2007, 20:20:55 UTC
Никто не типизирует, но я не могу представить себе ситуацию, в которой будет оправдано сложение числа и логического выражения.
И потом, может, мне надо получить именно единицу, а не какую-то там абстрактную истину.
(a)?1:0 ?

Reply

netp_npokon December 7 2007, 19:25:06 UTC
Кто-то забыл про ленивую семантику &&. Если b вычисляется только при a==true, то a=a&&b (а вместе с ним, видимо, и a&&=b) и if (!b) a=false в общем случае дают разный результат.

Reply

dizzy57 December 7 2007, 20:04:31 UTC
Ага, не проснулся ещё.
Но вообще, в отличии от ||=, в &&= как-то мало практического смысла.
Prooflink: http://maverickpiggy.blogspot.com/2006/09/tastes-of-ruby.html

Reply

netp_npokon December 7 2007, 20:14:50 UTC
Ничотак.

Reply


Leave a comment

Up