Я знаю, що оператори в Julia - це лише стандартні функції, і я можу їх використовувати, використовуючи звичайний синтаксис виклику префікса:
julia> +(1, 2)
3
Однак вони також особливі в тому сенсі, що їх можна (і зазвичай) використовувати як оператори інфікування:
julia> 1+2
3
Чи можу я визначити власного оператора infix? Якщо так, то як?
Наприклад:
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
хак (він спирається на неявне множення на протиставленні) , що зробив це:julia> using InfixFunctions; @infix α(x, y) = x + y; 1 |α| 2
. (InfixFunctions.jl
була розроблена як макро-вправа для себе, вона не працює з Джулією 1.x, як є.)