gpt4 book ai didi

elixir - 如何使用管道运算符将参数传递给匿名函数?

转载 作者:行者123 更新时间:2023-12-02 00:53:28 25 4
gpt4 key购买 nike

我正在玩 Elixir。只是想知道是否可以使用管道 |> 运算符将参数传递给匿名函数。这就是我的意思。

a = [1,2,3] #=> [1,2,3]
m = fn ([h|t]) -> [ h*h | m.(t) ] end #=> head squared and call m with tail. Not sure how to use & shortcut for this.
m.(a) #=> [1,4,9]
a |> m #=> undefined function m/1 (understood. Arity is 1)
a |> m.(&1) #=> unhandled &1 outside of capture

最佳答案

例如,您可以将匿名函数传递给管道,

 m = fn(x) -> x * x end # Function<6.50752066/1 in :erl_eval.expr/5>
3 |> m.() # 9

您似乎在匿名函数中进行递归调用,这是不可能的。行 m = fn ([h|t]) -> [ h*h | m.(t) ] 会导致执行出错。

要实现这一点,您可以传递与另一个参数相同的函数,或者您可以使用我更喜欢的命名函数,因为它看起来更清晰。

m = fn ([h|t],my_func) -> [ h*h | my_func.(t) ] end
a |> m.(m)

关于elixir - 如何使用管道运算符将参数传递给匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com