这可能是一个小点,但我想知道为什么Perl的逻辑运算符(&&,||,和!)优先于易于理解的"英语"逻辑运算符(and,or和not).使用前一组是否有任何优势,以及在脚本中使用后一组的任何缺点?
Jon*_*ler 23
原来&&,||和!运营商的高优先级相匹配的C语言.
较新的(但仍然大)and,or并not加入运营商简化一些常见的结构.例如,比较:
open my $fh, '<', $filename || die "A horrible death!";
open my $fh, '<', $filename or die "A horrible death!";
Run Code Online (Sandbox Code Playgroud)
第一个是不正确的; 高优先级||绑定,$filename而die不是你想要的.第二个是正确的; 低优先级or意味着缺少的括号不会导致歧义.
ike*_*ami 13
如果||并且or具有相同的优先权,那么
return some_func $test1 || $test2;
Run Code Online (Sandbox Code Playgroud)
意思是
return some_func($test1) || $test2;
Run Code Online (Sandbox Code Playgroud)
代替
return some_func($test1 || $test2);
Run Code Online (Sandbox Code Playgroud)
要么
some_func $test1 or die;
Run Code Online (Sandbox Code Playgroud)
意思是
some_func($test1 or die);
Run Code Online (Sandbox Code Playgroud)
代替
some_func($test1) or die;
Run Code Online (Sandbox Code Playgroud)
这些变化都不可取.
虽然人们可以or更容易地理解辩论||,但是阅读起来更难.当运算符看起来不像它们的操作数时,更容易读取代码.
| 归档时间: |
|
| 查看次数: |
6480 次 |
| 最近记录: |