6

例如,在“Programming Perl”中有这样的句子:

这些字符串运算符与其对应的算术运算符绑定得一样紧密。

在其他地方,无论是在“PP”还是在 perldoc 中,作者都​​使用了诸如“绑定紧密”之类的短语;例如,当指代 =~ 时,或者当指代 **(求幂)时“绑定得更紧密”。

如果这与优先级相同,我猜就不可能说“更紧”之类的话。你会说“更高/更低的优先级”。

那么操作员绑定到底是什么意思呢?

4

2 回答 2

8

这指的是运算符优先级。在声明中

a = b + c * d

乘法具有更高的优先级,因此“绑定”比加法更紧密。

绑定更紧密的运算符在绑定不太紧密的运算符之前进行评估。

于 2012-11-27T23:07:56.877 回答
6

您可以查看文档中的优先级列表,并将其与您阅读的文本进行比较。不过,我很确定他们在谈论优先级。

优先权是一种约束形式,因为它将论点以不同的强度“粘合”在一起。例如,人们常犯的错误是使用:

open my $fh, "<", "input.txt" || die $!;

这是一个无声且致命的错误,因为||“绑定更紧密”/具有比逗号,运算符更高的优先级,因此此表达式变为:

open my $fh, "<", ("input.txt" || die $!);

并且由于字符串“input.txt”始终为真,无论如何,由于它是一个常量,因此die永远不会使用该语句。因此,该open语句可能会静默失败,从而导致难以发现错误。

(解决方案是使用较低优先级运算符or而不是||,或者正如mob指出的那样,通过使用括号来覆盖优先级。)

于 2012-11-27T23:16:07.797 回答