Tôi biết các toán tử trong Julia chỉ là các hàm tiêu chuẩn và tôi có thể sử dụng chúng bằng cú pháp gọi tiền tố thông thường:
julia> +(1, 2)
3
Tuy nhiên, chúng cũng đặc biệt theo nghĩa chúng có thể (và thường) được sử dụng làm toán tử infix:
julia> 1+2
3
Tôi có thể định nghĩa toán tử infix của riêng mình không? Nếu vậy thì thế nào?
Ví dụ:
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
@infix
hack (nó dựa vào phép nhân ngầm định bởi juxtap vị trí) đã làm điều này :julia> using InfixFunctions; @infix α(x, y) = x + y; 1 |α| 2
. (InfixFunctions.jl
được phát triển như một bài tập vĩ mô cho bản thân tôi, nó không hoạt động với julia 1.x như vậy.)