프로그래밍에선 매개변수에도 종류가 있으며, Swift언어에서는 와일드카드 식별자를 사용해 생략도 할 수 있고, 또 전달인자라는 개념도 있다. 이 글에선 이 것들에 대해서 정리해보려고 한다.
1. 매개변수(Parameter)
흔히 매개변수(Parameter)라고 하면 메서드를 사용할 때 외부로부터 전달받는 값을 의미한다.
sayHello(name: "Greed")
func sayHello(name: String) {
print("\(name)님 안녕하세요!
}
위의 코드로 설명하자면 sayHello라는 메서드를 호출할 때, name이 바로 매개변수이다.
2. 전달인자(Argument)
전달인자(Argument)는 함수를 실제로 호출할 때 전달하는 값으로 시시각각 바뀐다는 특징이 있다.
sayHello(name: "Greed")
func sayHello(name: String) {
print("\(name)님 안녕하세요!
}
위와 같은 코드로 설명하자면 name이 매개변수이고, 그 옆에 실제로 name에 해당하는 값인 Greed가 바로 전달인자이다.
3. 외부 매개변수(Argument Label)와 내부 매개변수(Paremeter Name)
스위프트에서는 함수를 정의할 때 매개변수의 용도에 따라서 두 가지로 분리할 수 있다.
외부 매개변수 : 함수 외부에서 함수나 인자값을 구한하기 위해 사용하는 변수
내부 매개변수 : 입력된 인자값을 함수 내부에서 참조하기 위해 사용하는 변수
func 함수이름(<외부 매개변수명> <내부 매개변수명>: <타입>) {
//함수 내용
}
사용하는 방법은 위와 같다.
func myFunc(one n1: Int, two n2: Int, three n3: Int) -> () {
print(n1) // 함수 내부 : 내부 매개변수로
print(n2)
print(n3)
return
}
myFunc(one: 1, two: 2,three: 3) // 함수 외부 : 외부 매개변수로
실제로 사용한다면 위와 같은 형태로 사용할 수 있다. 그리고 함수 내부에서는 외부 매개변수(Argument Label)을 사용할 수 없으며, 마찬가지로 함수를 호출할 때는 내부 매개변수(Paremeter Name)를 사용할 수 없다.
4. 와일드 카드 식별자(_)
외부 매개변수(Argument Label)를 사용하지 않고 싶다면, 와일드 카드 식별자(_)를 사용하면 된다. 그러면 함수를 호출할 때 매개변수를 쓰지 않아도 된다.
func myFunc(_ n1: Int, _ n2: Int, _ n3: Int) -> () {
print(n1) // 함수 내부 : 내부 매개변수로
print(n2)
print(n3)
return
}
myFunc(1, 2, 3) // 외부 매개변수를 와일드카드 식별자로 변환해, 생략 가능
위와 같이 외부 매개변수를 _로 바꿔서 함수를 호출할 때, 매개변수 생략이 가능하다. 하지만 모든 매개변수를 다 생략하는 것은 권장하지 않는다. 그 이유는 함수를 호출할 때, 어떤 전달인자가 들어가야하는지 알기가 힘들며, 가독성이 떨어지기 때문이다. 코딩이란 작업이 혼자서도 할 수 있지만 협업을 한다면 다른 개발자가 해당 코드를 봤을때 이해하기 어려울 수 있다.
'# 개발 > Swift' 카테고리의 다른 글
[iOS]AppDelegate와 SceneDelegate (0) | 2024.01.08 |
---|---|
[iOS] 오토레이아웃(AutoLayout) (1) | 2024.01.04 |
[iOS] @IBOutlet & @IBAction 그리고 옵셔널! (1) | 2024.01.01 |
[iOS] UIKit과 StoryBoard (4) | 2023.12.28 |
[책 서평] - Do it! 스위프트로 아이폰 앱 만들기: 입문 (0) | 2023.02.04 |