加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 这句话的作用是什么:();

发布时间:2020-12-16 06:10:12 所属栏目:大数据 来源:网络整理
导读:我见过perl语句看起来像这样: () unless $some_var; 那打算实现什么目标? 解决方法 这里有几件事情,但最重要的是这种线通常会显示为执行块的最后一行[1].在该上下文中,块的值是最后执行的语句的值[2].现在一个语句包含除非右侧的值为左侧的值,否则为右侧的
我见过perl语句看起来像这样:

() unless $some_var;

那打算实现什么目标?

解决方法

这里有几件事情,但最重要的是这种线通常会显示为执行块的最后一行[1].在该上下文中,块的值是最后执行的语句的值[2].现在一个语句包含除非右侧的值为左侧的值,否则为右侧的值,所以这是一种说法“块的值是$some_var if $some_var恰好是真的,()否则“.

()仅仅是空列表,因此这段代码为$some_var为false的情况提供了空列表的默认值(可能是因为$some_var未定义.)

更常见的是与等同物一样实现相同的效果

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

除了作为块的最后一个语句之外的任何地方,()除非$some_var;是一个无操作.如果没有另外提到$some_var,它确实会抑制一次警告.

[1]:这是一个由eval评估的块,或者提供或提供给(例如)map或grep,或称为子例程的块.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读