代码之家  ›  专栏  ›  技术社区  ›  xiaodai

julia如何使用>和正确的paten匹配元组输入?

  •  0
  • xiaodai  · 技术社区  · 7 年前

    我很难理解为什么下面的不起作用?

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

    实际的用例要复杂得多,但我希望首先在julia中理解这个简单的模式。

    0 回复  |  直到 7 年前
        1
  •  3
  •   phipsgabler    7 年前

    ((a,b) -> a + b) 是两个参数的函数,而元组 (10, 10) 只是一种价值。另外,正如@gnimuc所建议的那样,您可以在lambda中解开这个论点:

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

    但老实说,我觉得多余的逗号有点难看。

        2
  •  2
  •   Gnimuc    7 年前

    管道运算符仅支持单参数链接:

    """
        |>(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) 等于 ((a,b) -> a + b)((10, 10)) 很明显这在茱莉亚是违法的 ((a,b) -> a + b)((10, 10)...) 因此:

    julia> (10, 10) |> x->((a,b) -> a + b)(x...)
    20
    
    推荐文章