2017-02-02 7 views

答えて

6

更新演算子のセットは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 
+3

また、この優先順位はあなたが期待するかもしれないものはおそらくないことに留意すべきです。 –

関連する問題