7.1.2 함수의 호출

함수를 정의하는 방법을 알았으니 실행하는 방법을 배워보겠습니다. 함수를 실행하는 것을 함수를 호출한다고 표현하는데 기본적으로 함수의 이름에 괄호를 붙이면 됩니다.

printHello()
// "안녕하세요"

함수 호출시에는 func 키워드는 사용하지 않습니다. 그리고 뒤 ()은 선언시의 ()와는 다릅니다. 선언시의 괄호는 매개변수를 선언하기 위한 영역이라면, 호출시에 사용하는 괄호는 함수를 호출하는 연산자입니다.

매개변수가 없다면 빈 괄호만 붙여서 호출하면 되지만, 매개변수가 잇다면 괄호 안에 인자값을 넣어서 호출해야 합니다.

let inputName = "홍길동"
printHelloWithName(name: inputName)
// "홍길동님, 안녕하세요"

그런데 호출 구문에서 인자값 입력하는 부분이 특이합니다 "name:"이 들어 있습니다. 만약 이 부분을 빼면 "name: 이라는 레이블이 누락되었다"는 오류 메시지가 뜹니다. "name"을 인자 레이블이라고 하는데 이 인자 레이블 없이 호출하면 컴파일 오류가 발생합니다. 다른 예시를 살펴보겠습니다.

// 입력된 (값 X 횟수) 만큼 카운트 변수의 값을 증가
func incrementBy(amount: Int, numberOfTimes: Int) {
    var count = 0
    count = amount * numberOfTimes
}

이 함수르 호출할 때에는 다음과 같이 인자값 앞에 인자 레이블을 붙여야 합니다.

incrementBy(amount: 5, numberOfTimes: 2)

스위프트에서는 두 가지 방식으로 함수를 호출할 수 있습니다.

func times(x: Int, y: Int) -> Int {
    return (x * y)
}

times(x: 5, y: 10) // 함수의 이름만으로 호출한 구문
times(x:y:)(5, 10) // 함수의 식별자를 사용하여 호출한 구문

함수명 뒤에 ()를 붙이고 여기에 인자 레이블과 인자값을 넣어 호출해주는 방법 하나, 그리고 함수 식별자 뒤에 ()를 붙이고 인자 레이블 없이 호출하는 방법 하나입니다.

Last updated