如何使用|>并正确模式匹配元组输入?

时间:2019-03-30 01:38:35

标签: julia

我很难理解为什么以下内容不起作用?

(10, 10) |> ((a,b) -> a + b)

实际用例更加复杂,但是我希望了解Julia的使用模式

2 个答案:

答案 0 :(得分:3)

((a,b) -> a + b)是两个参数的函数,而元组(10, 10)只是一个值。除了@Gnimuc建议的外,还可以在lambda中解压缩参数:

julia> (10, 10) |> (((a,b),) -> a + b)
20

但是,老实说,我发现多余的逗号有点难看。

答案 1 :(得分:2)

流水线运算符仅支持单参数链接:

if ((customKey<='9')&&(customKey>='0'))
    { 
      DataStr+=customKey;
      TulisanDesimalBeli(customKey,DataStr);
      a=(int)customKey&0x0F;
      HarBel=HarBel*10;
      HarBel=HarBel+a;
     }

""" |>(x, f) Applies a function to the preceding argument. This allows for easy function chaining. # Examples ```jldoctest julia> [1:5;] |> x->x.^2 |> sum |> inv 0.01818181818181818 ``` """ |>(x, f) = f(x) 等同于(10, 10) |> ((a,b) -> a + b),在Julia中这显然是非法的,因为它缺少了一个斜体运算符((a,b) -> a + b)((10, 10)),因此:

((a,b) -> a + b)((10, 10)...)