본문 바로가기
카테고리 없음

5. 함수의 정의와 호출

by swifttt 2025. 3. 29.

 

Swift에서 함수는 코드의 재사용성을 높이고 논리적 구조를 명확히 하기 위해 반드시 필요한 구성 요소입니다. 함수는 하나의 작업을 정의한 코드 블록으로, 입력값을 받아 처리한 뒤 결과를 반환할 수도 있고, 단순히 동작만 수행할 수도 있습니다.

1. 함수 기본 형태

Swift에서 함수는 func 키워드를 사용하여 정의합니다. 함수 이름, 매개변수, 반환 타입, 함수 본문으로 구성됩니다.

func greet() {
    print("안녕하세요!")
}

greet() // 함수 호출

위 예제는 입력값도 없고 반환값도 없는 가장 기본적인 함수 형태입니다. greet()를 호출하면 "안녕하세요!"가 출력됩니다.

2. 매개변수가 있는 함수

함수는 입력값을 받을 수 있으며, 이를 매개변수(parameter)라고 부릅니다. 각 매개변수는 이름과 타입을 지정해야 합니다.

func greet(name: String) {
    print("안녕하세요, \(name)님!")
}

greet(name: "민수")

매개변수는 여러 개를 받을 수도 있으며, 쉼표로 구분하여 선언합니다.

func add(a: Int, b: Int) {
    print("합은 \(a + b)입니다.")
}

add(a: 3, b: 5)

3. 반환값이 있는 함수

함수는 처리 결과를 반환할 수 있습니다. 반환 타입은 매개변수 뒤에 -> 기호를 사용하여 명시합니다.

func square(number: Int) -> Int {
    return number * number
}

let result = square(number: 4)
print("제곱 결과: \(result)")

이 함수는 Int 값을 받아 제곱한 뒤 결과를 Int로 반환합니다.

4. 매개변수 레이블과 생략

Swift 함수는 외부에서 호출할 때 사용하는 매개변수 레이블(argument label)과 내부 이름을 다르게 설정할 수 있습니다.

func multiply(x a: Int, y b: Int) -> Int {
    return a * b
}

let result = multiply(x: 3, y: 4)

레이블을 생략하려면 _를 사용합니다.

func say(_ message: String) {
    print("📢 \(message)")
}

say("이것은 라벨이 없는 호출입니다.")

5. 기본값을 가진 매개변수

함수의 매개변수에 기본값을 지정하면 호출 시 생략이 가능합니다.

func welcome(user: String = "손님") {
    print("환영합니다, \(user)님!")
}

welcome()             // "환영합니다, 손님님!"
welcome(user: "지수")  // "환영합니다, 지수님!"

6. 반환값이 여러 개인 함수

Swift에서는 튜플(tuple)을 이용하여 여러 값을 반환할 수 있습니다.

func calculate(_ a: Int, _ b: Int) -> (sum: Int, difference: Int) {
    return (a + b, a - b)
}

let result = calculate(10, 4)
print("합: \(result.sum), 차: \(result.difference)")

튜플의 각 항목에 이름을 붙여 사용하면 가독성을 높일 수 있습니다.

마무리

함수는 Swift에서 로직을 구성하는 가장 핵심적인 단위입니다. 매개변수와 반환값, 레이블, 기본값, 튜플 등을 적절히 활용하면 코드의 중복을 줄이고 가독성을 크게 향상시킬 수 있습니다. 실무에서는 함수 단위로 로직을 잘게 나누어 명확한 책임을 부여하는 것이 중요합니다.