익명 함수
익명 함수 (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에 전달되는 a와 b의 값은 현재 환경에서 상속돼요.
성능상의 이유로, 기존 함수를 감싸는 익명 함수를 정의하기보다는 기존 Octave 함수에 대한 핸들을 사용하는 것이 더 좋아요. sin (x)의 적분은 코드를
quad (@sin, 0, pi)
처럼 작성하면 익명 함수 @(x) sin (x)를 사용할 때보다 5배 더 빨라요. 익명 함수보다 더 나은 선택일 수 있는 함수형 동등물(functional equivalent)을 가진 연산자가 많아요. 다음과 같이 쓰는 대신
f = @(x, y) x + y
이렇게 코딩해야 해요.
f = @plus
더 알아보기
- 함수형 형태를 가진 연산자 목록은 연산자 오버로딩 항목을 참고하세요.
- 함수 핸들에 대한 내용도 함께 보면 좋아요.