例如,在“Programming Perl”中有这样的句子:
这些字符串运算符与其对应的算术运算符绑定得一样紧密。
在其他地方,无论是在“PP”还是在 perldoc 中,作者都使用了诸如“绑定紧密”之类的短语;例如,当指代 =~ 时,或者当指代 **(求幂)时“绑定得更紧密”。
如果这与优先级相同,我猜就不可能说“更紧”之类的话。你会说“更高/更低的优先级”。
那么操作员绑定到底是什么意思呢?
例如,在“Programming Perl”中有这样的句子:
这些字符串运算符与其对应的算术运算符绑定得一样紧密。
在其他地方,无论是在“PP”还是在 perldoc 中,作者都使用了诸如“绑定紧密”之类的短语;例如,当指代 =~ 时,或者当指代 **(求幂)时“绑定得更紧密”。
如果这与优先级相同,我猜就不可能说“更紧”之类的话。你会说“更高/更低的优先级”。
那么操作员绑定到底是什么意思呢?
这指的是运算符优先级。在声明中
a = b + c * d
乘法具有更高的优先级,因此“绑定”比加法更紧密。
绑定更紧密的运算符在绑定不太紧密的运算符之前进行评估。
您可以查看文档中的优先级列表,并将其与您阅读的文本进行比较。不过,我很确定他们在谈论优先级。
优先权是一种约束形式,因为它将论点以不同的强度“粘合”在一起。例如,人们常犯的错误是使用:
open my $fh, "<", "input.txt" || die $!;
这是一个无声且致命的错误,因为||
“绑定更紧密”/具有比逗号,
运算符更高的优先级,因此此表达式变为:
open my $fh, "<", ("input.txt" || die $!);
并且由于字符串“input.txt”始终为真,无论如何,由于它是一个常量,因此die
永远不会使用该语句。因此,该open
语句可能会静默失败,从而导致难以发现错误。
(解决方案是使用较低优先级运算符or
而不是||
,或者正如mob指出的那样,通过使用括号来覆盖优先级。)