我读了https://github.com/JuliaLang/julia/issues/5571,这让我觉得由于一些评论我可以打破这样的界限:
a = [x*5 for x in 0:20 if x>4]
scale(y) = (x)-> y*x
filter(y) = x -> [z for z in x if z>y]
a|>(x->x/3)
|>scale(2)
|>filter(4)
|>println
但我收到错误:
ERROR: LoadError: syntax: "|>" is not a unary operator
in include_from_node1(::String) at ./loading.jl:488
in process_options(::Base.JLOptions) at ./client.jl:265
in _start() at ./client.jl:321
我被迫使用a|>(x->x/3)|>scale(2)|>filter(4)|>println
吗?
答案 0 :(得分:9)
您可以将|>
运营商移至行尾:
julia> a|>(x->x/3)|>
scale(2)|>
filter(4)|>
println
这种语法是因为解析器需要在语句结束时明确决定。
(实际上,我自己问了一个关于这个问题的问题,得到了一个很好的答案。见Why is `where` syntax in Julia sensitive to new-line?)