Elixir的文档说明
drop_while(enumerable, fun)
Drops items at the beginning of the enumerable while fun returns a truthy value
Run Code Online (Sandbox Code Playgroud)
但是我对下面的输出感到困惑。这是否意味着一旦获得!truthy所有其他一切,就被视为错误?
iex> Enum.drop_while([0,1,2,3,4,5], fn(x) -> rem(x,2) == 0 end)
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
我期望输出是[1,3,5]因为
iex> Enum.map([0,1,2,3,4,5], fn(x) -> rem(x,2) == 0 end)
[true,false,true,false,true,false]
Run Code Online (Sandbox Code Playgroud)
我试图了解它的工作原理,而不是试图获得我想要的输出(Enum.filter实现结果)
您在寻找Enum.reject/2,不是Enum.drop_while/2。就像文档中所说的那样,Enum.drop_while从一开始就丢弃,直到fun返回真实值。在您的示例中,fun返回true为1,因此您可以从开始获得原始列表的所有元素1。
iex(1)> Enum.reject([0, 1, 2, 3, 4, 5], fn(x) -> rem(x, 2) == 0 end)
[1, 3, 5]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |