English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang Fun

Fun은 Erlang에서 익명 함수를 정의하는 데 사용됩니다. 익명 함수의 일반 문법은 다음과 같습니다:

문법

F = fun(Arg1, Arg2, ... ArgN) ->
   ...
End

설명

  • F −이는 익명 함수에 할당된 변수 이름입니다.

  • Arg1, Arg2, ... ArgN −이는 익명 함수에 전달된 매개변수입니다.

익명 함수의 사용법을 보여주는 예제를 설명합니다.

예시

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   A = fun() -> io:fwrite("Hello") end, 
   A().

위의 프로그램에 대해 주의해야 할 몇 가지 사항이 있습니다.

  • 익명 함수는 변수 A에 할당됩니다.

  • 변수를 통해 익명 함수 A().

위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

“Hello”

익명 함수의 또 다른 예제는 다음과 같지만, 이는 매개변수를 사용하는 것입니다.

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]) 
      end, 
   A(5).

위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

출력

5

변수 사용

익명 함수는 익명 함수 범위 밖의 변수에 접근할 수 있는 능력을 가지고 있습니다. 예를 들어 보겠습니다.-

예시

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   B == 6, 
   A = fun(X) -> 
      io:fwrite("~p~n",[X]), 
      io:fwrite("~p~n",[B]) 
      end, 
   A(5).

위의 프로그램에 대해 주의해야 할 몇 가지 사항이 있습니다.

  • 변수 B는 익명 함수의 범위를 벗어납니다.

  • 익명 함수는 전역으로 정의된 변수에도 접근할 수 있습니다.

위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

출력

5
6

함수 내의 함수

고차 함수의 가장 강력한 특징 중 하나는 함수 내에서 함수를 정의할 수 있다는 것입니다. 이를 어떻게 구현할 수 있는지 보여드리겠습니다.

예시

-> module(helloworld). 
-> export([start/> 0]). 
start() -> 
   Adder = fun(X) -> fun(Y) -> io:fwrite("~p~n",[X + Y]) end end, 
   A = Adder(6), 
   A(10).

위의 프로그램에 대해 주의해야 할 몇 가지 사항이 있습니다.

  • 추가 계산기는 fun(X)로 정의된 고차 함수입니다.

  • 추가 계산기 함수 fun(X)는 다른 함수 fun(Y)을 참조합니다.

위의 프로그램을 실행하면 다음과 같은 결과를 얻습니다.

출력

16