Julia의 연산자는 표준 함수이며 일반적인 접두사 호출 구문을 사용하여 사용할 수 있습니다.
julia> +(1, 2)
3
그러나 이들은 또한 중위 연산자로 사용될 수 있고 일반적으로 사용된다는 점에서 특별합니다.
julia> 1+2
3
내 고유 연산자를 정의 할 수 있습니까? 그렇다면 어떻게?
예를 들면 다음과 같습니다.
julia> α(x, y) = x+y
α (generic function with 1 method)
julia> α(1, 2)
3 # as expected
julia> 1α2
# expected result: 3
ERROR: UndefVarError: α2 not defined
Stacktrace:
[1] top-level scope at REPL[5]:1
julia> 1 α 2
# expected result: 3
ERROR: syntax: extra token "α" after end of expression
Stacktrace:
[1] top-level scope at REPL[5]:0
답변
앞서 말했듯이 연산자는 표준 함수일 뿐이며 다른 함수와 마찬가지로 정의하고 조작 할 수 있습니다. 그러나 Julia의 구문 분석기는 특정 기호 세트를 삽입 연산자로 인식하도록 구성됩니다. 이름이 이러한 기호 중 하나 인 함수를 정의하면이를 중위 연산자로 구문 분석합니다.
예를 들면 다음과 같습니다.
julia> ⊕(x, y) = x+y
⊕ (generic function with 1 method)
# standard prefix function call
julia> ⊕(1, 2)
3
# infix operator call
julia> 1⊕2
3
julia> 1 ⊕ 2
3
삽입 연산자 (및 관련 우선 순위)로 인식되는 기호 목록은 Julia 구문 분석기 소스 코드에서 찾을 수 있습니다 . 대부분이 목록은 유니 코드 범주 Sm (Symbol, math) 의 하위 집합입니다 .
현재로서는 예를 들면 다음과 같습니다.
- 다음과 같은 우선 순위로 구문 분석되었습니다
+
.
+ - ⊕ ⊖ ⊞ ⊟ ∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦
⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣
- 다음과 같은 우선 순위로 구문 분석되었습니다
*
.
* / ÷ % & ⋅ ∘ × ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇
⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻
⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗