코딩을 할 때 함수를 만들고 쓰면서 문득 용어에 대해 의문이 들었다. 함수를 통해 전달하는 변수들을 보통 매개변수라고 하거나 아니면 파라미터라고 부르기도 하다가 가끔 인자라고 부르기도 했다. 그리고 문서를 보면 parameter와 argument라는 용어가 자주 나오는데 뭐 대충 내용을 이해하는데는 문제가 없었지만 둘의 차이를 정확히 몰라서 혼용하고 있다는 걸 깨달았다.
일단 영어니까.. 네이버 사전에 검색해봤다.
오잉? 이게 아닌거 같은데..
그냥 영어 뜻 말고 프로그래밍 관점에서 사용되는 의미를 파악해야 할 것 같았다. 역시 그렇다면 위키피디아가 최고지!
아하! parameter는 매개변수가 맞고, argument는 전달인자라고 불리는구나!
오케이. 여기까지. 오늘 공부 끝! 하기엔 역시 좀 찝찝해서 머리가 아프지만 무슨 의미인지 해석해보기로 했다.
매개변수란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴...
응? 서브루틴?
좋아, 그러니까 독립해서 사용되지 않고 부품으로써 사용되는 함수의 한 종류로구나. 자 다시 매개변수로 돌아가서..
...서브루틴의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다.
아하! 함수이름 옆 소괄호에 입력하는 여러 데이터들을 말하는구나.
func mySubroutine(a: String, b: Int) { // a와 b는 매개변수(parameter)
...
}
매개변수는 알겠고, 그럼 전달인자(argument)는 뭐가 다른 거지?
여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument) 라고 부른다.
엥 뭐야? 서브루틴의 인풋으로 제공되는 여러 데이터라는 말이면.. 파라미터랑 똑같은 거 아닌가?
보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.
그렇지. 매개변수는 정의 부분이고, 전달인자는 함수를 호출할 때 사용된다는 말이구나. 쉽게 말해서 매개변수는 전달할 변수들의 이름에 해당하고, 실제 입력되는 값을 전달인자라고 하는 거네.
func mySubroutine(a: String, b: Int) { // 정의된 a와 b는 매개변수(parameter)
...
}
mySubroutine(a: "argument", b: 0) // 전달할 값인 "argument"와 0은 전달인자(argument)
알고 보면 간단하네. 이 정도면 앞으론 매개변수와 전달인자를 헷갈리지 않을 것 같다.
참고: https://ko.wikipedia.org/wiki/%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)#cite_note-1
'프로그래밍' 카테고리의 다른 글
면접 본 (망한)후기 (0) | 2022.04.25 |
---|---|
Drupal(드루팔)로 웹사이트 구축하기 (0) | 2021.12.15 |
The escaping cat on Scratch (0) | 2021.10.01 |
SDK vs API vs Framework vs Library? (4) | 2021.09.30 |
함수(function)와 메서드(method) 차이? (0) | 2021.05.28 |