2017-06-13 105 views
6
链接

我读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

回答

10

您可以将|>运营商移动到线两端:

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

此语法是因为分析器需要时,语句结束毫不含糊地决定。

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