Elixir中如何将Enum管道操作结果赋值给变量?
Elixir:将管道运算符链的结果赋值给变量
你写的代码里用了<-是错误的——Elixir的赋值运算符是=,不是这个箭头符号。
要把管道链的最终结果赋值给变量,只需要用普通的赋值语法,把变量放在=左侧,管道链放在右侧即可,正确写法示例:
data = some_list |> Enum.map(&(&1 * 2)) # 注意:Enum.map必须传入处理元素的函数,你原代码缺了这个参数 |> Enum.sort()
这样data就会存储整个管道链的最终结果。管道运算符|>的作用是将前一步的执行结果,作为下一个函数的第一个参数传入,所以上面的代码完全等价于:
mapped_data = Enum.map(some_list, &(&1 * 2)) data = Enum.sort(mapped_data)
另外要注意,你原代码里的Enum.map()是不合法的,因为Enum.map/2需要两个参数:待处理的枚举对象和元素处理函数,管道会自动把some_list作为第一个参数传递,但你必须手动提供第二个函数参数,否则会触发参数数量不匹配的错误。
内容的提问来源于stack exchange,提问作者henhen
相关产品推荐
相关产品推荐

