pax*_*blo 10
它是定义运算符.表达方式:
A // B
Run Code Online (Sandbox Code Playgroud)
A如果已定义则返回,否则返回B.
如果未定义信息源,则获取默认值非常有用,例如:
$actualBalance = $balanceFromBank // 0;
Run Code Online (Sandbox Code Playgroud)
要么:
$confirmation = $userInput // "N";
Run Code Online (Sandbox Code Playgroud)
请参阅perlop页面的相关部分以获取更多详细信息,并建立perlop链接以供将来参考,因为Google搜索和标点符号Perl代码不能很好地混合:-)
所述//操作者是一个逻辑定义-或.Perlop说:
虽然它在C语言中没有直接的等价物,但Perl的//运算符与它的C风格有关.事实上,它与||完全相同,只是它测试左手边的定义而不是真实.因此,EXPR1 // EXPR2返回EXPR1的值(如果已定义),否则返回EXPR2的值.(EXPR1在标量上下文中评估,EXPR2在//本身的上下文中评估).通常,这与定义的结果相同(EXPR1)?EXPR1:EXPR2(除了三元运算符形式可以用作左值,而EXPR1 // EXPR2不能).这对于为变量提供默认值非常有用.如果您确实要测试是否定义了$ a和$ b中的至少一个,请使用defined($ a // $ b).
简而言之:如果定义了表达式(如未定义undef)或右侧,则返回左侧.
my $foo = undef;
say $foo // 42;
# 42
my $bar = 'bar';
say $bar // 42;
# bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |