더북(TheBook)

잠시 용어 정의를 확실히 하고 넘어가자. ‘매개변수(parameter)’와 ‘인수(argument)’를 내키는 대로 혼용하는 사람들이 많다. 나는 시맨틱에 관한 한 미세한 솜털 하나라도 골라내는 데 많은 시간을 바칠 각오가 되어 있으니, 여러분도 아리송한 용어는 의미를 분명히 알고 넘어가기 바란다.

용어 얘기가 나왔으니 말인데, C 같은 정적 타입 언어는 함수를 선언하는(declare) 행위와 정의하는(define) 행위를 명확히 구분한다. 선언은 함수의 타입을 그 이름에 바인드하므로 호출 시 타입 체크는 가능하지만 바디는 제공되지 않는다. 정의는 함수를 선언하는 동시에 바디를 코드로 채워 넣기 때문에 함수 컴파일이 가능하다.

록스는 동적 타입 언어라서 이 구분은 아무 의미가 없다. 함수 선언은 바디까지 포함한 함수 전체를 지정한다.

인수(argument)는 함수 호출 시 실제로 함수에 전달하는 값이다. 따라서 함수 ‘호출’은 ‘인수’ 리스트를 갖고 있다. 실 매개변수(actual parameter)라고 부르기도 한다.

매개변수(parameter)는 함수 바디(body, 본문/내용물) 안에서 인숫값을 담아둔 변수다. 그래서 함수 ‘선언’은 ‘매개변수’의 리스트를 갖고 있다. 형식 매개변수(formal parameter)라고 부르기도 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.