gpt4 book ai didi

operators - 如何在 Julia 中定义新的运算符 |= 或 |>=?

转载 作者:行者123 更新时间:2023-12-02 23:10:21 24 4
gpt4 key购买 nike

我们知道a += 1等价于a = a + 1。我希望 a |>= √a |= √ 相当于 a = a |> √。我可以定义这个新的运算符吗?

最佳答案

更新操作符集是 hardcoded目前仅限于:

+= -= *= /= //= \= ^= ÷= %= <<= >>= >>>= |= &= ⊻= $=

解析器会自动将所有这些扩展为a = a op b。然而,所有这些运算符在基数中都有明确定义的含义,并且具有与 |> 不同的优先级。您可以用您自己的含义来隐藏其中一个定义,但这对于使用您的代码的其他人来说会非常令人惊讶......并且您自己有时可能会对优先级感到惊讶。

julia> const | = |>
|> (generic function with 1 method)

julia> a = 2
2

julia> a |= √
1.4142135623730951

我想你可以通过只覆盖函数参数的行为来让它变得更好一点:

julia> >>>(x, y::Function) = y(x)
>>>(x, y) = Base.:>>>(x, y)
>>> (generic function with 2 methods)

julia> a = 2
a >>>= √
1.4142135623730951

julia> 0xf3 >>> 3 # The standard unsigned bit shift
0x1e

关于operators - 如何在 Julia 中定义新的运算符 |= 或 |>=?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993755/

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