【发布时间】:2019-03-10 00:34:24
【问题描述】:
考虑一个(难闻的,非惯用的)函数,如下所示:
def update_2d(array, inds, val) do
[first_coord, second_coord] = inds
new_arr = List.update_at(array, second_coord, fn(y) ->
List.update_at(Enum.at(array, second_coord),
first_coord, fn(x) -> val end) end)
end
此函数将接收一个列表列表、一个包含两个索引的列表以及一个要插入到列表列表中由索引指定的位置的值。
作为使这个更灵丹妙药的第一步,我开始铺设管道:
array
|> Enum.at(second_coord)
|> List.update_at(first_coord, fn(x) -> val end)
这让我了解了大部分情况,但是我如何将该输出通过管道传输到最后一个 List.update_at 调用的匿名函数中?我可以将它嵌套在原始调用中,但这似乎喜欢放弃:
List.update_at(array, second_coord, fn(y) ->
array
|> Enum.at(second_coord)
|> List.update_at(first_coord, fn(x) -> val end)
end)
【问题讨论】:
标签: list functional-programming pipeline elixir