2017-04-06 11 views

答えて

7

単精度演算子としての&は、ccall構文(ただし、this syntax is deprecated now)で使用されているため、単項演算子としての特殊形式です。したがって、&(1, 2)Expr(:&, :(1, 2))として解析されます。

    |
  • ので|(1, 2)1 | 2、関数呼び出しとして解析された単項演算子ではありません。
  • +とは、+(1, 2)-(1, 2)を2つの引数の関数呼び出しとして解析できるように特殊な解析規則を持っています(そうでないと、実行時にエラーとなる1つの引数の関数呼び出しです)。 &は通常のオペレータではなく特殊なフォームなので、このルールの対象にはなりません。
  • Base.:&は、演算子として解析されるのではなく、識別子に対する通常のフィールド参照です。したがって、ここではあいまいさはなく、通常の関数呼び出しのように解析されます。同様に、(&)(1, 2)は通常の関数呼び出しとして解析されるため、(&)は通常の識別子として解析されるためです。
+0

素晴らしい説明をいただきありがとうございます。 –

関連する問題