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」は常にtrueであるため、定数であるため、dieステートメントが使用されることはありません。したがって、openステートメントはサイレントに失敗し、エラーを見つけるのが困難になる可能性があります。

or(解決策は、の代わりに優先順位の低い演算子を使用する||か、mobが指摘しているように、括弧を使用して優先順位をオーバーライドすることです。)

于 2012-11-27T23:16:07.797 に答える