# 使用函数式管道运算符时,矢量化计算与聚合函数搭配时的注意事项【举例】
A = [1,2,3]
f(x) = @. 2x + 1 #【@.】自动矢量化的宏
sum(f(A)) #计算结果 = 15
# =============使用管道运算符=============注意中间的括号和begin/let end
#为方便观察,中间排版增加了空格
[1,2,3].|> x -> 2x + 1 |> sum # 结果=[3,5,7] 【错误】 我当时的最初写法,结果发现计算错误
[1,2,3].|> (x -> 2x + 1) |>sum #结果 = 15 【正确】
[1,2,3] |> items-> items .|> x-> 2x+1 |> sum # 结果=[3,5,7] 【错误】
[1,2,3] |> items-> (items .|> x-> 2x+1) |> sum # 结果=15 【正确】
[1,2,3] |> (items-> items .|> x-> 2x+1) |> sum # 结果=15 【正确】
[1,2,3] |> x -> 2x .+ 1 |> sum # 结果=15 【正确】 直观度 * 1星
[1,2,3] |> @. x -> 2x + 1 |> sum # 结果=[3,5,7] 【错误】
[1,2,3] |> (@. x -> 2x + 1) |> sum # 结果=15 【正确】 直观度 ** 2星
begin [1,2,3] |> @. x -> 2x + 1 end |> sum # 结果=15 【正确】
let ; [1,2,3] |> @. x -> 2x + 1 end |> sum # 结果=15 【正确】
#列表推导
[2x+1 for x in [1,2,3]] |> sum |> println #15
println(sum([2x+1 for x in [1,2,3]]) #15
# ****前面的矢量计算管道,处理不慎会对后面的计算产生分支****
#****需要看julia编译前的词法分析,怎么处理这个语法,才能避坑****
网友评论