2017-02-02 8 views

ответ

6

Набор обновляемых операторов 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 
+3

Следует также отметить, что это преимущество, вероятно, не то, что вы могли бы ожидать. –

Смежные вопросы