1
a += 1
は私がa |>= √
かa = a |> √
と同等のa |= √
を持っていると思いa = a + 1
ジュリア・ラングの新しい演算子を定義| =や|> =
に相当します。これらの新しい演算子を定義できますか?
a += 1
は私がa |>= √
かa = a |> √
と同等のa |= √
を持っていると思いa = a + 1
ジュリア・ラングの新しい演算子を定義| =や|> =
に相当します。これらの新しい演算子を定義できますか?
更新演算子のセットはhardcodedであり、現在に限定:
+= -= *= /= //= \= ^= ÷= %= <<= >>= >>>= |= &= ⊻= $=
パーサが自動的にa = a op b
にこれらのすべてを拡大していきます。しかし、これらの演算子はすべて、基底で意味が明確に定義されており、優先順位は|>
よりも異なります。これらの定義の1つをあなた自身の意味で隠すことができますが、あなたのコードを使用する他の人にとっては非常に驚くことでしょう...そして、あなたは時には優先順位によって驚くかもしれません。
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
また、この優先順位はあなたが期待するかもしれないものはおそらくないことに留意すべきです。 –