min*_*nya 6 perl binding operators operator-precedence
例如,在"Programming Perl"中,有这样的句子:
这些字符串运算符与其对应的算术运算符紧密绑定.
在其他地方,无论是在"PP"还是在perldoc中,作者都使用诸如"紧紧束缚"之类的措辞; 例如,当提到**(指数)时引用=〜或"更紧密地绑定".
如果这与优先级相同,那么就不可能说"更严格",我猜.你会说"更高/更低的优先级".
那么运营商绑定到底意味着什么呢?
这指的是运算符优先级.在声明中
a = b + c * d
Run Code Online (Sandbox Code Playgroud)
乘法具有更高的优先级,因此比加法"绑定"更紧密.
绑定得更紧密的运算符在不太严格绑定的运算符之前进行求值.
您可以查看文档中的优先级列表,并将其与您阅读的文本进行比较.不过,我觉得他们确实在谈论优先权.
优先权是一种约束形式,因为它将论点与不同的力量"粘合"在一起.例如,人们常犯的一个错误是使用:
open my $fh, "<", "input.txt" || die $!;
Run Code Online (Sandbox Code Playgroud)
这是一个沉默且致命的错误,因为||"绑定得更紧密"/具有比逗号,运算符更高的优先级,因此该表达式变为:
open my $fh, "<", ("input.txt" || die $!);
Run Code Online (Sandbox Code Playgroud)
由于字符串"input.txt"始终为true,因此无论如何,因为它是常量,所以die从不使用该语句.而且open语句可以因此失败默默,导致难以发现的错误.
(解决方案是使用较低优先级的运算符or代替||,或者当mob指出时,使用括号覆盖优先级.)