Каков смысл следующего утверждения в Perl:Что такое смысл следующего высказывания в Perl: Num // = 0
num //= 0
Каков смысл следующего утверждения в Perl:Что такое смысл следующего высказывания в Perl: Num // = 0
num //= 0
perldoc perlop содержит списки операторов Perl.
Логическое Defined-Или
Хотя это не имеет прямого эквивалента в C, // оператор Perl является связана с его C-стиль "или". Фактически, это точно так же, как ||, , за исключением того, что он проверяет определенность левой стороны, а не свою правду .
//=
- это только его задание.
Назначение операторы работают как в C. То есть,
$x += 2;
эквивалентно
$x = $x + 2;
Так он присваивает 0
к num
если num
уже определен.
Это отличное от ||
, так как определены значения, которые не соответствуют действительности (например, 0
или пустая строка).
Num // = 0, что эквивалентно
num = num // 0;
Это означает, что он проверяет, установлен ли левый операнд или нет, если он определен, он возвращает левый операнд, а другой - правый операнд.
my $num;
$num //= 0;
print $num; # optputs 0
$num = 9;
$num //= 0;
print $num; # outputs 9
Это не эквивалентно 'num = num || 0; '. '//' и '||' отличаются друг от друга. Один из них проверяет правдоподобие другого на определенность. – Quentin
Итак, я понимаю, что если «num» не является нулевым, возьмите «num», если null принимает 0. Справа? –
@OsamaMostafa - Нет. Ну. Поскольку Perl не имеет «null», это никогда не может произойти в первую очередь. – Quentin
$num = $num // 0;
теперь удобный способ
$num =
defined
$num ? $num : 0;
//
упоминается как определен или оператор, что instead of testing for truth, tests for defined-ness.
Если переменная не undef
или массив пустой()
(который на самом деле evaluates to an undefined value in scalar context) - это определяется.
Так my($a, $b, $c) = ('', '0', 0)
все определены но ложные.
Осторожно до Perl 5.10 не было таких, как assignment$pi //= PI
.
Вы не имеете в виду '$ var // = 0;'? 'num // = 0;' - ошибка. – ikegami