gpt4 book ai didi

perl - 这个语句有什么作用 : ();

转载 作者:行者123 更新时间:2023-12-01 07:22:07 25 4
gpt4 key购买 nike

我见过像这样的 perl 语句:

() unless $some_var;

这样做的目的是什么?

最佳答案

这里发生了一些事情,但最重要的是这种行通常出现在已执行块的最后一行[1]。在这种情况下,块的值是最后执行的语句 [2] 的值。现在包含 unless 的声明如果右侧为真,则具有左侧的值,否则为右侧的值,因此这是一种说法“如果 $some_var 发生,块的值为 $some_var为真,() 否则”。
()只是空列表,因此此代码为 $some_var 的情况提供了空列表的默认值。为假(可能是因为 $some_var 未定义。)

or 达到同样的效果更常见,在等价物

$some_var or ();

放在一起,我们可以看到这些案例:
use strict;
use warnings;

my @x = do { () unless 0 };
my @y = do { () unless 5 };

print "\@x: <@x>\n\@y: <@y>\n";
@x是空数组,因为 0为假,而 @y是一个包含 5 的数组因为 5是真的。

除了作为块的最后一条语句之外的任何地方, () unless $some_var;是一个空操作。它确实抑制了 once警告如果 $some_var但是没有另外提到。

[1]:这是一个由 eval 评估的块或 do或提供给(例如) mapgrep ,或称为子程序的块。

[2]:“最后执行的语句的值”是一个奇怪的短语;大多数情况下只有表达式有值。但是因为 Perl 包含这样一个概念,即在没有显式返回的情况下,块的值就是最后一条语句的值,所以 Perl 需要这个奇怪的短语。

关于perl - 这个语句有什么作用 : ();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563442/

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