gpt4 book ai didi

elixir - 列表理解 vs Enum.filter

转载 作者:行者123 更新时间:2023-12-04 23:38:42 27 4
gpt4 key购买 nike

我可以写

unitlist |> Enum.filter(&(s in &1))

或者我可以写
for u <- unitlist, s in u, do: u

两种结构的功能有何不同?

最佳答案

对于这种特殊情况,无论 unitlist 的值是多少,它们都是相同的。是——它们都接受任何可枚举并运行 s in &1检查每个项目并为那些返回真值的项目返回一个新列表。
for具有比什么更多的功能 Enum.filter可以单独完成:您可以遍历多个枚举并生成一个平面的结果列表。您可以在 <- 的左侧有一个容易出错的模式和 for将默默地跳过这些项目而不是抛出错误。您可以修改检查后返回的值。以下代码片段演示了所有这些:

iex(1)> for a <- 1..3, b = 2 <- 1..3, a > 1, do: {a, b}
[{2, 2}, {3, 2}]

一个 for可以脱糖为 Enum.map的组合, if , 和 Enum.flat_map .以上与此相同:
Enum.flat_map(1..3, fn a ->
Enum.flat_map(1..3, fn
b = 2 ->
if(a > 1, do: [{a, b}], else: [])
_ ->
[]
end)
end)
|> IO.inspect

关于elixir - 列表理解 vs Enum.filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200072/

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