gpt4 book ai didi

julia - 用户定义的中缀运算符

转载 作者:行者123 更新时间:2023-12-03 15:01:22 27 4
gpt4 key购买 nike

我知道 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

可以找到识别为中缀运算符(和相关优先级)的符号列表 in the Juliaparser sourcecode .对于
大多数情况下,此列表是 unicode category Sm 的子集(符号,
数学)。

目前,它包括例如:
  • 以与 + 相同的优先级解析:
  • + - ⊕ ⊖ ⊞ ⊟ ∪ ∨ ⊔ ± ∓ ∔ ∸ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦
    ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣
  • 以与 * 相同的优先级解析:
  • * / ÷ % & ⋅ ∘ × ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇
    ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻
    ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗

    关于julia - 用户定义的中缀运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60321301/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com