我想部分应用一个功能.有没有标准简洁的方法在Elixir做任何一种currying?
我知道我可以做这样的事情:
new_func = fn(arg2, arg3) -> my_func(constant, arg2, arg3) end
new_func2 = fn -> my_func2(constant) end
Run Code Online (Sandbox Code Playgroud)
但它看起来很难看.
您可以使用捕获&运算符来清理它:
plus2 = &Kernel.+(2, &1)
plus2.(4)
6
Run Code Online (Sandbox Code Playgroud)
注意.在plus2和它的parens之间的点
因为这是一种语法糖
plus2 = fn(right) -> Kernel.+(2, right) end
Run Code Online (Sandbox Code Playgroud)
所有相同的规则都适用.就像你必须提供你正在"currying"的函数的所有参数一样,你可以按任何顺序放置位置参数.
文档:http://elixir-lang.org/docs/stable/elixir/Kernel.SpecialForms.html#&/1
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |