머리말
함수에서 사용되는 여러 용어
- 함수를 사용할 때면 매개변수, 전달인자, 인수, 아규먼트 레이블, 파라미터(패러미터), 아규먼트 등 여러 용어가 혼용하여 쓰인다.
- 특히나 Swift에서는 "아규먼트 레이블(argument label)"이라는 새로운 개념이 있어서 각 용어를 제대로 구분할 필요가 있다.
- 따라서 관련 용어를 확실하게 구분하기 위해 이번 포스팅을 하게 되었다
참고 자료
용어 정리
매개변수(parameter)
- 함수를 '정의'할 때 쓰이는 변수의 이름 그 자체
- 이름에 '변수'가 들어간 것을 알 수 있듯이 변수이다
- 하지만 엄밀히 말하면 Swift에서는 매개변수가 변수가 아니라 상수이다.
- Swift에서는 매개변수의 값을 직접 변경하고 싶다면 inout이라는 키워드를 써서 값이 아닌 주소로 접근(call by reference)해야 한다.
- 또는 지역변수로서 새로운 변수(매개변수와 이름이 같아도 상관 없다)를 선언하여 매개변수를 할당할 수도 있다.
전달인자(argument; 인수)
- 함수를 '호출'할 때 쓰이는 실제 값 그 자체
- 매개변수가 단순히 이름이라면, 전달인자는 해당 매개변수의 타입에 대한 리터럴(값 그 자체)이다.
아규먼트 레이블(argument label; 전달인자의 꼬리표)
- Swift에서 사용되는, 함수가 호출될 때 전달인자 앞에 붙어 있는 레이블(꼬리표)
- 레이블을 이용하면 어떠한 전달인자를 넣어야 할지를 짐작할 수 있게 한다
- 아규먼트 레이블 없이 매개변수만 사용하면면, 매개변수의 이름이 곧 아규먼트 레이블이 된다.
- 굳이 레이블을 이용하고 싶지 않다면 '밑줄(underscore) 기호'(_)를 이용하여 생략할 수 있다.
실습
1. 아규먼트 레이블 없이 매개변수만 있을 때
func someFunction(firstParameterName: Int, secondParameterName: Int) {
// firstParameterName과 secondParameterName은
// 각각 첫 번째와 두 번째의 매개변수에 대한 아규먼트 레이블이 된다.
}
someFunction(firstParameterName: 1, secondParameterName: 2)
2. 아규먼트 레이블을 따로 정의했을 때
func someFunction(argumentLabel parameterName: Int) {
// 아규먼트 레이블은 argumentLabel이 되고,
// parameterName은 함수의 정의에서 사용이 된다.
}
someFunction(argumentLabel: 1)
3. 아규먼트 레이블을 생략하고 싶을 때
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
// firstParameterName의 아규먼트 레이블은 생략이 되지만,
// secondParameterName은 두 번째 매개변수에 대한 아규먼트 레이블로 반드시 사용되어야 한다.
}
someFunction(1, secondParameterName: 2)
'iOS > Swift' 카테고리의 다른 글
[Swift] 열거형과 원싯값 (feat. CaseIterable) (0) | 2023.07.25 |
---|---|
[Swift] 번호 기호(#)로 Raw String 사용하기 (0) | 2023.07.23 |
[Swift] 집합(Set)의 메서드 (0) | 2023.06.14 |
[Swift] 프로퍼티(Properties) (0) | 2023.05.21 |
클래스와 구조체 차이 (0) | 2023.05.18 |
댓글