方法在朱莉娅链接

时间:2017-06-13 11:21:17

标签: julia

我读了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吗?

1 个答案:

答案 0 :(得分:9)

您可以将|>运营商移至行尾:

julia> a|>(x->x/3)|>
       scale(2)|>
       filter(4)|>
       println

这种语法是因为解析器需要在语句结束时明确决定。

(实际上,我自己问了一个关于这个问题的问题,得到了一个很好的答案。见Why is `where` syntax in Julia sensitive to new-line?