perl – 什么! (双重感叹号)是什么意思?

前端之家收集整理的这篇文章主要介绍了perl – 什么! (双重感叹号)是什么意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在下面的代码中,从 blog post by Alias,我注意到使用双惊叹号!!。我想知道这是什么意思,我在未来可以去找到解释Perl语法如此。 (是的,我已经在 perlsyn搜索!!)。
  1. package Foo;
  2.  
  3. use vars qw{$DEBUG};
  4. BEGIN {
  5. $DEBUG = 0 unless defined $DEBUG;
  6. }
  7. use constant DEBUG => !! $DEBUG;
  8.  
  9. sub foo {
  10. debug('In sub foo') if DEBUG;
  11.  
  12. ...
  13. }

更新
感谢您的所有答案。

这里是别人我只是发现是相关的The List Squash Operator x!!

解决方法

这只是两个!布尔不是运算符彼此相邻。

使用这个成语的原因是确保你收到一个1或0.实际上,它返回一个空的字符串,numifys为0.它通常只用于数字或布尔上下文。

你通常会在Code Golf赛事中看到这个,因为它比使用三元组更短? :运算符为1和0($ test?1:0)。

  1. !! undef == 0
  2. !! 0 == 0
  3. !! 1 == 1
  4. !! $obj == 1
  5. !! 100 == 1
  6.  
  7. undef ? 1 : 0 == 0
  8. 0 ? 1 : 0 == 0
  9. 1 ? 1 : 0 == 1
  10. $obj ? 1 : 0 == 1
  11. 100 ? 1 : 0 == 1

猜你在找的Perl相关文章