Kar*_*lek 17 c# perl null-coalescing-operator
我开始真的很喜欢C#的?运营商.而且我很习惯这样一个事实:在某些语言中有一些方便的东西,它最有可能也在Perl中.
但是,我找不到?? 相当于Perl.有没有?
Ada*_*ire 33
从5.10开始,有一个//运算符,如果你认为undefPerl中的概念等同null于C#中的概念,那么它在语义上是等价的.
例A:
my $a = undef;
my $b = $a // 5; # $b = 5;
Run Code Online (Sandbox Code Playgroud)
例B:
my $a = 0;
my $b = $a // 5; # $b = 0;
Run Code Online (Sandbox Code Playgroud)
正如亚当所说,Perl 5.10有一个//运算符,用于测试其左手操作符的定义而不是真值:
use 5.010;
my $value = $this // $that;
Run Code Online (Sandbox Code Playgroud)
如果您使用的是早期版本的Perl,则会有点混乱.这||将无效:
my $value = $this || $that;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果$this为0或空字符串,两者都已定义,您将得到$that.为了解决这个问题,成语是使用条件运算符,以便您可以自己检查:
my $value = defined( $this ) ? $this : $that;
Run Code Online (Sandbox Code Playgroud)