我有一个符合条件或不匹配的元素列表。我知道可以使用Enum.filter
或Enum.reject
来获取匹配/不匹配条件的元素列表,但这意味着分别调用这两个方法。
例如,假设一个整数列表(1..10
)和一个布尔方法is_even?
,我想得到一个列表(或元组)列表整数分组为奇数和偶数:
[[0,2,4,6,8], [1,3,5,7,9]]
我查看了Enum.group_by/3
但是它返回了一个带有布尔键的映射,然后必须映射它以将其转换为List或Tuple(并且还会创建键的顺序的不确定性) :
1..10
|> Enum.group_by(&is_even?/1)
|> Enum.map(fn {_, v} -> v end)
#=> [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
我希望有一些更简洁,更清洁的东西,让你一步一步地确定按键顺序。