아주 기본적인 비약 질문을 반환하는 경우를 제외하고, 배관 중에 정의되지 이 방법으로 시도 :기능 <p></p> 내가 1 (10) 및 출력이 <p>IO.puts</p>에 처음부터 짝수 합계를, 아마 익명 함수
1..10
|> Enum.filter(fn (x) -> rem(x, 2) == 0 end)
|> Enum.sum
|> IO.puts
예상대로 작동합니다.
defmodule Test do
def is_even(x) do
rem(x, 2) == 0
end
end
1..10
|> Enum.filter(Test.is_even)
|> Enum.sum
|> IO.puts
을하지만이 나에게 컴파일에 다음과 같은 오류를 제공합니다 : 그런 다음
나는 같은 모듈 내에서 그 함수를 정의하려고 왜 is_even을 찾고
** (UndefinedFunctionError) undefined function: Test.is_even/0
Test.is_even()
tmp/src.exs:8: (file)
(elixir) src/elixir_lexical.erl:17: :elixir_lexical.run/3
(elixir) lib/code.ex:316: Code.require_file/2
/0 (내 의도로) is_even/1을 찾아야 할 때?
이 왜 나는 특히이 일을하기 때문에, 이해가 안 :
defmodule Test do
def hello(x) do
IO.puts(x)
end
end
Test.hello("Hello World!")
작품 완전히 잘.
나는 또한 발견 만이 작동합니다
defmodule Test do
def is_even() do
fn (x) -> rem(x, 2) == 0 end
end
end
1..10
|> Enum.filter(Test.is_even)
|> Enum.sum
|> IO.puts
이 왜 함수로 사용할 함수의 반환을 사용하는 대신 함수 자체를 사용?
함수 내부에서 익명 함수를 반환하지 않고이 작업을 수행 할 수있는 방법이 있습니까?
가 작동하지 않습니다 무엇을하려고하지만, 실제로 작동하고 싶지 않아 어떻게 이유가 설명된다. –
나는 첫 번째 질문에 대답했다. –