글을 읽다 보면 1급 함수(first-class function)처럼 1급(first-class)이란 단어가 나오는데, 이 단어의 의미를 간단히 정리해 보았다.
- 파라미터로 전달될 수 있다
- 리턴 값으로 사용될 수 있다
- 변수에 할당할 수 있다
- 런타임에 생성될 수 있다
first-class function 의 의미는 함수를 파라미터로 전달하고, 변수에 할당하고, 리턴 값으로 함수를 받을 수 있고, 런타임에 함수를 생성할 수 있다는 의미가 된다.
-
-
최범균 madvirus 2013.06.21 08:49 신고
1급함수가 아닌 함수가 아니라,,, 언어에서 함수를 1급으로 처리하느냐에 대한 겁니다.
자바의 경우는 다음과 같은 코드가 안 되죠.
// public void myFunc()이 있다고 가정
Some some = new Some();
some.callAny(myFunc); // 파라미터로 메서드 자체를 줄 수 없음
자바에서는 메서드가 1급으로 처리되지 않기에, 메서드 자체를 생성자나 변수나 파라미터 등에 전달할 수 없습니다. 메서드만 따로 생성하는 것도 안 되구요.
반면에 자바스크립트에서는 아래와 같은 코드가 가능하죠.
function someFunc() { ... }
otherFunc(someFunc) // 함수 자체를 파라미터로 전달 가능
var a = someFunc; // 함수를 변수에 할당 가능
즉, 자바 스크립트에서는 함수를 1급으로 처리하고 있습니다.
-