2016-08-17 1 views
1

, 나는 3의 점점 배수, 목록에서 작동하는 경우 :엘릭서의 필터 기능에 문이나 문을 사용할 수없는 이유는 무엇입니까? 불로 불사의 영약에서

1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0) end) 

출력 : [3, 6, 9]


경우로 나는 나 문 추가하는 경우 :

1..10 |> Enum.filter(fn(x) -> (rem(x,3) == 0 || rem(x,5)) end) 

을 출력 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


(또는 괄호로 묶인) 문이 의도하지 않은 결과를 나타내는 이유는 무엇입니까?

답변

6

rem/2은 결과로 정수를 반환합니다. 모든 정수는 0을 포함한 엘 릭크에서 진리입니다. 즉, rem(x, 5)은 항상 사실이며 필터 함수는 항상 true를 반환하고 모든 항목을 유지합니다. 당신은 아마 사용하려고 의도 :

iex(1)> 1..10 |> Enum.filter(fn(x) -> rem(x,3) == 0 || rem(x,5) == 0 end) 
[3, 5, 6, 9, 10] 
+0

무슨 뇌가 퇴색! 건배! – Rich

관련 문제