我开始真正如C#的 ?? 运算符。而且我很习惯于这样的事实,即哪里有什么用场的一些语言,这是最有可能在Perl了。

然而,我无法找到??相当于在Perl。是否有任何?

有帮助吗?

解决方案

作为5.10存在//操作者,如果考虑在Perl undef的概念等同于null的C#中的概念,它在语义上等同。

实施例A:

my $a = undef;
my $b = $a // 5;  # $b = 5;

实施例B:

my $a = 0;
my $b = $a // 5;  # $b = 0;

其他提示

亚当说,Perl 5.10的具有测试其左手操作者所定义的烦躁代替真相//操作:

 use 5.010;

 my $value = $this // $that;

如果您正在使用Perl的早期版本,这是一个有点乱。该||不会工作:

 my $value = $this || $that;

在这种情况下,如果$this是0或空字符串,被定义这两者,就会得到$that。要解决这个问题,这个成语是使用条件运算符,所以你可以使自己的检查:

 my $value = defined( $this ) ? $this : $that;

实际上,短路OR操作者将还评估为undef当工作:

my $b = undef || 5;  # $b = 5;

然而,将评价0,但是当失败真:

my $b = 0 || 5;  # $b = 5;

在问题暗示的任何数量的参数,所以答案隐含的子程序:

在这里,你得到它 - 将返回一个列表的第一个定义/非空字符串值:

sub coalesce { (grep {length} @_)[0] }

不,我知道的。

Perl是不是真的空概念的大用户。它有一个测试变量是否处于不确定状态。无特殊操作,如?虽然,但你可以使用条件:?运营商与民主基金测试,并得到相当接近

和我没有看到perl的操作什么列表要么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top