有Perl的相当于空合并运算符(?)在C#中?
-
19-09-2019 - |
题
我开始真正如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的操作什么列表要么。
不隶属于 StackOverflow