a += 1
эквивалентно a = a + 1
джулия-Ланг определить новый оператор | = или |> =
Я хотел бы иметь a |>= √
или a |= √
a = a |> √
эквивалент. Могу ли я определить этот новый оператор?
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
Следует также отметить, что это преимущество, вероятно, не то, что вы могли бы ожидать. –