2017-04-06 2 views

답변

7

단 하나의 연산자로 &ccall 구문 (비록 this syntax is deprecated now)에서 사용되었으므로 간단히 그 이유는 단항 연산자로 특수 형식입니다. 따라서 &(1, 2)Expr(:&, :(1, 2))으로 구문 분석됩니다.

  • | 정도로 |(1, 2)1 | 2 함수 호출로 파싱 단항 연산자 아니다. +(1, 2)-(1, 2)가 2 개의 인수를 함수 호출로 분석 할 수 있도록
  • +-은 특별한 경우 구문 분석 규칙이 (그렇지 않으면 실행시 오류 것 기능이 튜플에 호출 한 인수 될 것이다). &은 일반 규칙이 아닌 특수한 형식이므로이 규칙의 적용을받지 않습니다.
  • Base.:&은 연산자로 파싱되지 않고 식별자에 대한 일반적인 필드 참조입니다. 따라서 여기서 모호성이 없으며 일반 함수 호출과 같이 구문 분석됩니다. 마찬가지로 (&)(1, 2)은 일반 함수 호출로 구문 분석됩니다. (&)이 일반 식별자로 구문 분석되기 때문입니다.
+0

훌륭한 설명에 감사드립니다. –