我知道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
@infix
黑客认为这样做(它由并列依赖于隐含的乘法)julia> using InfixFunctions; @infix α(x, y) = x + y; 1 |α| 2
。(它InfixFunctions.jl
是为我自己制定的一项宏观练习,它本身无法与julia 1.x一起使用。)