在下面的代码中,从
blog post by Alias,我注意到使用双惊叹号!!。我想知道这是什么意思,我在未来可以去找到解释Perl语法如此。 (是的,我已经在
perlsyn搜索!!)。
- package Foo;
- use vars qw{$DEBUG};
- BEGIN {
- $DEBUG = 0 unless defined $DEBUG;
- }
- use constant DEBUG => !! $DEBUG;
- sub foo {
- debug('In sub foo') if DEBUG;
- ...
- }
更新
感谢您的所有答案。
这里是别人我只是发现是相关的The List Squash Operator x!!
解决方法
这只是两个!布尔不是运算符彼此相邻。
使用这个成语的原因是确保你收到一个1或0.实际上,它返回一个空的字符串,numifys为0.它通常只用于数字或布尔上下文。
你通常会在Code Golf赛事中看到这个,因为它比使用三元组更短? :运算符为1和0($ test?1:0)。
- !! undef == 0
- !! 0 == 0
- !! 1 == 1
- !! $obj == 1
- !! 100 == 1
- undef ? 1 : 0 == 0
- 0 ? 1 : 0 == 0
- 1 ? 1 : 0 == 1
- $obj ? 1 : 0 == 1
- 100 ? 1 : 0 == 1