트랙
/
Elixir
Elixir
/
학습 과정
/
익명 함수
익명

익명 함수 에서 Elixir

4개의 연습 문제

익명 함수 소개

익명 함수는 Elixir 전반에서 단독으로, 반환값으로, 또 Enum.map/2 같은 고차 함수의 인자로 흔히 사용해요:

Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]

Elixir에서 함수는 일급 객체로 취급해요:

  • 이름 있는 함수와 익명 함수를 변수에 할당할 수 있어요.
  • 이름 있는 함수와 익명 함수를 데이터처럼 인자와 반환값으로 주고받을 수 있어요.
  • 익명 함수는 동적으로 만들 수 있어요.

익명 함수는 fn 키워드로 만들고, 점(.)을 붙여 호출해요:

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

익명 함수는 & 캡처 축약형으로도 만들 수 있어요.

  • 맨 앞의 &는 캡처 표현식의 시작을 알려요.

  • &1, &2 등은 익명 함수의 위치 인자를 가리켜요.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • & 캡처 연산자는 이미 있는 이름 있는 함수를 캡처하는 데에도 쓸 수 있어요:

    # Instead of:
    fn a, b -> a <= b end
    
    # We can capture the function using its name and arity:
    &<=/2
    

Elixir의 익명 함수는 클로저예요. 함수가 정의될 때 스코프 안에 있는 변수에 접근할 수 있어요. 익명 함수 안에서 할당한 변수는 그 밖에서는 접근할 수 없어요:

y = 2

square = fn ->
  x = 3
  x * y
end

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

익명 함수 배우기

연습이 잠겨 있어요

익명 함수 개념을 연습하려면 연습 문제 1개를 더 잠금 해제해요