2016-08-03 4 views
1

エリクサーのドキュメント状態 エリクシールでdrop_whileを使用していますか?

drop_while(enumerable, fun) 
    Drops items at the beginning of the enumerable while fun returns a truthy value 

は、しかし、私は、以下の出力で混乱しています。それは一度それを得ることを意味する !truthy他のすべてはfalseとして扱われますか?

iex> Enum.drop_while([0,1,2,3,4,5], fn(x) -> rem(x,2) == 0 end) 
[1,2,3,4,5] 

が、私はそれは私が欲しいの出力を取得しようとしているのではなく、どのように動作するかを理解しようとしています[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] 

ための出力を期待

答えて

3
(結果を達成するために Enum.filterがあります)

あなたはEnum.reject/2を探していますが、Enum.drop_while/2ではありません。ドキュメントのように、Enum.drop_whileから始まりからfunに真実の値を返します。あなたの例では、fun1のためにtrueを返します。したがって、元のリストのすべての要素は1から始まります。

iex(1)> Enum.reject([0, 1, 2, 3, 4, 5], fn(x) -> rem(x, 2) == 0 end) 
[1, 3, 5] 
+0

だから、「真実の価値まで」はそれを理解する鍵です。 – Bala

関連する問題