Swift 입문 | 함수 | 인수의 외부명


인수는 가인수이 되는 변수명 외에 외부명을 가질 수 있다. 이는 아래와 같이 작성한다.

(외부명 변수명:유형)

이 외부명이라는 것은 그 함수를 호출할 때 인수에 이름을 지정하는데 사용한다. 이는 실제 예제을 보면 알 수 있다.

아래에 간단한 함수의 사용 예제가 있다.

func tax(price p:Int, rate r:Double) -> Int {
    return Int(Double(p) * (1.0 + r))
}
 
var res:Int = tax(price:10000, rate:0.08)

tax는 가격과 세율을 인수로 지정해 호출하면 세금 포함 가격을 계산하여 반환하는 함수이다. 여기에서는 다음과 같이 인수 부분을 정의하고 있다.

tax(price p:Int, rate r:Double)

인수명은 p와 r이다. 함수 내부에서는 이러한 변수를 사용하여 계산하고 있다. 그럼 이를 호출하는 부분을 살펴 보자.

tax(price : 10000 rate : 0.08)

외부명으로 price과 rate를 지정하고 값을 작성하고 있다. 이렇게 하면 각각 인수의 역할은 명확하다.

복수의 인수를 가지는 함수의 경우, 어떤 인수가 무슨 역할을 하는지 외형으로는 알 수 없다. 그 함수의 레퍼런스 등으로 조사해 확인하고, 호출해 보지 않으면 쉽게 알 수 없다. 이 외부명을 사용하면, 하나씩 하나의 인수 역할을 한눈에 알 수 있다. 이렇게 함으로써 함수 호출에 관련하는 버그를 최초화 할 수 있다. 외부명을 사용하지 않으면 함수 호출은 아래 같다.

tax(10000, 0.08)

이 작성을 하면 코드를 작성한 본인 이외는 무슨 일을 하고 있는지 모른다. 외부명은 코드를 보다 알기 쉽게하는데 필수적인 기능이라고 할 수 있다.

숏헤드(shorthand)에 대해

외부명이 중요하다는 것을 알았다. 그렇지만 “일일이 외부명과 변수명을 2개나 이름을 작성하는 것은 귀찮은 일이다"라고 생각하는 사람도 많을 것이다. 이 경우는 변수명을 그대로 외부명으로 사용할 수 있도록 할 수 있다. 예를 들어, 예제 tax 함수라면 이렇게 작성한다.

func tax(price:Int, rate:Double) -> Int {
    return Int(Double(price) * (1.0 + rate))
}

var res:Int = tax(10000, rate:0.08)

인수의 변수명에 외부명만 사용하였다. 이것은 숏헤드(shorthand)라는 설정이다. 이렇게 하면 변수명이 그대로 외부명으로 사용할 수있게 된다. 함수 내에서 사용할 변수명과 외부명이 같기 때문에 소스 코드도 깔끔해지고 가독성 높아진다.