2016-08-03 4 views
1

비약의 문서 상태 Elixir에서 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까지 truey 값을 반환합니다. 귀하의 예에서 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

관련 문제