Я новичок в Perl и наткнулся на этот кусок кода на работе, я искал какое-то время, но не нашел ответа. Может ли кто-нибудь помочь объяснить его функцию на простом английском? спасибо.
my $abc = delete $args{ 'abc' } // croak 'some information!';
Я новичок в Perl и наткнулся на этот кусок кода на работе, я искал какое-то время, но не нашел ответа. Может ли кто-нибудь помочь объяснить его функцию на простом английском? спасибо.
my $abc = delete $args{ 'abc' } // croak 'some information!';
С этой страницы здесь: http://perldoc.perl.org/perlop.html#Logical-Defined-Or
Хотя он не имеет прямого эквивалента в C, оператор Perl
//связан с его стилем Cor. На самом деле это точно так же, как||, За исключением того, что он испытывает левостороннюю определенность вместо ее истинности. Таким образом,EXPR1//EXPR2возвращает значениеEXPR1если оно определено, в противном случае возвращается значениеEXPR2. (EXPR1вычисляется в скалярном контексте,EXPR2в контексте самого//). Обычно это такой же результат, какdefined(EXPR1)? EXPR1: EXPR2defined(EXPR1)? EXPR1: EXPR2(за исключением того, что форма троичного оператора может использоваться как l-значение, тогда какEXPR1//EXPR2не может, а EXPR1 будет оцениваться только один раз). Это очень полезно для предоставления значений по умолчанию для переменных. Если вы действительно хотите проверить, определен ли хотя бы один из$aи$b,defined($a//$b).
Проверьте Logical Defined-or в perlop, он похож на ||, но он проверяет значение undef (не false one).
Хотя он не имеет прямого эквивалента в C, оператор Perl//связан с его C-стилем или. Фактически, он точно такой же, как и ||, за исключением того, что он проверяет определенность левой стороны вместо своей правды.
Итак,
my $abc = delete $args{ 'abc' } // croak 'some information!';
будет кричать, когда $args{ 'abc' } возвращает значение undef.