Perl的(或,和)和(||,\u0026\u0026)短路运算符有什么区别?

前端之家收集整理的这篇文章主要介绍了Perl的(或,和)和(||,\u0026\u0026)短路运算符有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这些子程序中哪一个不像另一个?
  1. sub or1 {
  2. my ($a,$b) = @_;
  3. return $a || $b;
  4. }
  5.  
  6. sub or2 {
  7. my ($a,$b) = @_;
  8. $a || $b;
  9. }
  10.  
  11. sub or3 {
  12. my ($a,$b) = @_;
  13. return $a or $b;
  14. }
  15.  
  16. sub or4 {
  17. my ($a,$b) = @_;
  18. $a or $b;
  19. }

我从C和Perl 4来到Perl 5,总是使用||直到我看到更多的脚本使用或和我喜欢它的样子。但是正如上面的测验所示,它不是没有它的缺陷为不道德的。对于使用这两个结构或者使用很多的人,或者,你使用什么经验法则来决定使用哪个结构,并确保代码正在做你认为它正在做什么?

解决方法

由于’or’运算符的低优先级,or3解析如下:
  1. sub or3 {
  2. my ($a,$b) = @_;
  3. (return $a) or $b;
  4. }

通常的建议是只使用’或’运算符作为控制流:

  1. @info = stat($file) or die;

有关更多讨论,请参阅perl手册:http://perldoc.perl.org/perlop.html#Logical-or-and-Exclusive-Or

猜你在找的Perl相关文章