gpt4 book ai didi

perl - 为什么在 Perl 中没有等同于//的低优先级?

转载 作者:行者123 更新时间:2023-12-05 00:25:54 25 4
gpt4 key购买 nike

我想这个问题可能会让一些人觉得不是很重要,但我一直想知道为什么 Perl 中没有低优先级的定义或运算符。我想这是有原因的,因为 perlop明确地提到了这个事实。

我认为它有用的一个例子是在这样的子程序中:

sub input_many_data {
my $x = <> // return;
do_some_processing_with($x);
my $y = <> // return;
do_some_processing_with($y);
return ( $x, $y );
}

while (1) {
my ( $x, $y ) = &input_many_data or last;
do_something_with( $x, $y );
}

它确实适用于 $x = (<> // return) ,但目的会更明显,代码更易读且不易出错,例如 ($x = <>) dor return .

最佳答案

我从来没有真正理解为什么有些搬运工 [1] 有问题。我认为关于如何称呼它缺乏共识( definedordorerr ),但回想起来,我很想相信真正的原因是对 use feature 感到不舒服.请记住,use feature//在同一版本中被添加到 Perl 中。

或者可能不是。您可以在 p5 porters mailing list 上找到对话。 .

顺便说一下,下面的意图很明显:

my $x = <>
// return;

隐藏 return 是一种不好的做法无论如何,在一行的末尾。替代方案是:
( my $x = <> )
// return;


defined( my $x = <> )
or return;


my $x = <>;
$x // return;


my $x = <>;
return if !defined($x);

那些与常用的5.8兼容。

  • 那些在 Perl 本身上工作的人。
  • 关于perl - 为什么在 Perl 中没有等同于//的低优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270667/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com