익명 함수

익명 함수 (Anonymous Functions)

익명 함수는 @(argument-list) expression 문법으로 정의돼요. 인자 목록에 없는 변수들은 감싸고 있는 스코프에서 상속받아요.

출처: 문서

본문

익명 함수는 다음 문법으로 정의해요.

@(argument-list) expression

인자 목록에서 찾을 수 없는 변수들은 감싸고 있는 스코프에서 상속돼요. 익명 함수는 표현식에서 간단한 이름 없는 함수를 만들거나, quad 같은 함수가 사용할 수 있도록 다른 함수 호출을 감싸 적응시킬 때 유용해요. 예를 들어,

f = @(x) x.^2;
quad (f, 0, 10)
    ⇒  333.33

은 표현식 x.^2에서 간단한 이름 없는 함수를 만들어 quad에 전달하고,

quad (@(x) sin (x), 0, pi)
    ⇒  2

은 다른 함수를 감싸며,

a = 1;
b = 2;
quad (@(x) betainc (x, a, b), 0, 0.4)
    ⇒  0.13867

은 여러 매개변수를 가진 함수를 quad가 요구하는 형태에 적응시켜요. 이 예에서 betainc에 전달되는 ab의 값은 현재 환경에서 상속돼요.

성능상의 이유로, 기존 함수를 감싸는 익명 함수를 정의하기보다는 기존 Octave 함수에 대한 핸들을 사용하는 것이 더 좋아요. sin (x)의 적분은 코드를

quad (@sin, 0, pi)

처럼 작성하면 익명 함수 @(x) sin (x)를 사용할 때보다 5배 더 빨라요. 익명 함수보다 더 나은 선택일 수 있는 함수형 동등물(functional equivalent)을 가진 연산자가 많아요. 다음과 같이 쓰는 대신

f = @(x, y) x + y

이렇게 코딩해야 해요.

f = @plus

더 알아보기

  • 함수형 형태를 가진 연산자 목록은 연산자 오버로딩 항목을 참고하세요.
  • 함수 핸들에 대한 내용도 함께 보면 좋아요.