2015-11-04 2 views

ответ

5

perldoc perlop содержит списки операторов Perl.

Логическое Defined-Или

Хотя это не имеет прямого эквивалента в C, // оператор Perl является связана с его C-стиль "или". Фактически, это точно так же, как ||, , за исключением того, что он проверяет определенность левой стороны, а не свою правду .

//= - это только его задание.

Назначение операторы работают как в C. То есть,

$x += 2; 

эквивалентно

$x = $x + 2; 

Так он присваивает 0 к num если num уже определен.

Это отличное от ||, так как определены значения, которые не соответствуют действительности (например, 0 или пустая строка).

0

Num // = 0, что эквивалентно

num = num // 0; 

Это означает, что он проверяет, установлен ли левый операнд или нет, если он определен, он возвращает левый операнд, а другой - правый операнд.

my $num; 

$num //= 0; 

print $num; # optputs 0 

$num = 9; 

$num //= 0; 

print $num; # outputs 9 
+2

Это не эквивалентно 'num = num || 0; '. '//' и '||' отличаются друг от друга. Один из них проверяет правдоподобие другого на определенность. – Quentin

+0

Итак, я понимаю, что если «num» не является нулевым, возьмите «num», если null принимает 0. Справа? –

+0

@OsamaMostafa - Нет. Ну. Поскольку Perl не имеет «null», это никогда не может произойти в первую очередь. – Quentin

2

$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.

Смежные вопросы