2017-06-13 15 views
6

tôi đọc https://github.com/JuliaLang/julia/issues/5571 mà làm cho tôi nghĩ rằng tôi có thể phá vỡ dòng như vậy do một số nhận xét:Phương pháp Chaining trong Julia

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 

Nhưng tôi nhận được lỗi:

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 

Tôi buộc sử dụng a|>(x->x/3)|>scale(2)|>filter(4)|>println?

Trả lời

10

Bạn có thể di chuyển |> nhà khai thác dòng-kết thúc:

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

Cú pháp này là bởi vì phân tích cú pháp cần phải quyết định một cách rõ ràng khi một tuyên bố kết thúc.

(thực ra, tôi đã tự hỏi một câu hỏi về bản thân mình và có câu trả lời hay. Xem Why is `where` syntax in Julia sensitive to new-line?)

Các vấn đề liên quan