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

前端之家收集整理的这篇文章主要介绍了perl – 这句话的作用是什么:();前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我见过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需要这个奇怪的短语.

猜你在找的Perl相关文章