Swift 함수 기초부터 심화까지: 정의, 호출, 매개변수 및 반환 값 다루기

작성일 :

Swift 함수 기초부터 심화까지: 정의, 호출, 매개변수 및 반환 값 다루기

Swift는 강력하고 사용하기 쉬운 프로그래밍 언어로, 특히 함수형 프로그래밍 패러다임을 구현하는 데 탁월합니다. 이 글에서는 함수의 기본 개념부터 고급 주제까지 다루면서 Swift 함수에 대한 전반적인 이해를 돕고자 합니다.

함수의 정의

Swift에서 함수는 func 키워드를 사용해 정의합니다. 함수는 특정 작업을 수행하는 코드의 블록으로 매개변수를 받을 수 있고, 값을 반환할 수도 있습니다. 기본적인 함수의 형태는 다음과 같습니다.

swift
func sayHello() {
    print("Hello, World!")
}

이 예제에서는 sayHello라는 이름의 함수를 정의하고, 이 함수는 호출되면 문자열 "Hello, World!"를 출력합니다.

함수의 호출

정의된 함수를 호출하는 것은 매우 간단합니다. 함수 이름 뒤에 괄호를 붙여 호출할 수 있습니다.

swift
sayHello() // 출력: Hello, World!

매개변수 받기

함수는 입력 값을 받을 수 있도록 매개변수를 정의할 수 있습니다. 매개변수는 괄호 안에 콜론으로 구분하여 작성합니다.

swift
func greet(name: String) {
    print("Hello, \(name)!")
}

함수를 호출할 때는 해당 매개변수에 값을 전달해야 합니다.

swift
greet(name: "Alice") // 출력: Hello, Alice!

다중 매개변수

Swift 함수는 여러 개의 매개변수를 받을 수 있습니다. 각 매개변수는 쉼표로 구분합니다.

swift
func greet(userName: String, age: Int) {
    print("Hello, \(userName)! You are \(age) years old.")
}

함수를 호출할 때는 모든 매개변수에 값을 전달해야 합니다.

swift
greet(userName: "Bob", age: 30) // 출력: Hello, Bob! You are 30 years old.

기본 매개변수 값

매개변수에는 기본 값을 지정할 수 있으며, 이 경우 호출 시 해당 매개변수를 생략할 수 있습니다.

swift
func greet(name: String = "Guest") {
    print("Hello, \(name)!")
}

기본 값이 설정된 매개변수는 생략할 수 있습니다.

swift
greet() // 출력: Hello, Guest!
greet(name: "Charlie") // 출력: Hello, Charlie!

반환 값

함수는 작업을 수행한 후 결과를 반환할 수 있습니다. -> 키워드를 사용해 반환 타입을 정의합니다.

swift
func add(a: Int, b: Int) -> Int {
    return a + b
}

함수를 호출하고 반환 값을 변수에 저장할 수 있습니다.

swift
let result = add(a: 3, b: 5)
print(result) // 출력: 8

다중 반환 값

Swift 함수는 튜플을 사용하여 여러 값을 반환할 수 있습니다.

swift
func divide(a: Int, b: Int) -> (quotient: Int, remainder: Int) {
    return (a / b, a % b)
}

반환된 튜플 값을 개별 변수에 저장할 수 있습니다.

swift
let results = divide(a: 10, b: 3)
print("Quotient: \(results.quotient), Remainder: \(results.remainder)")
// 출력: Quotient: 3, Remainder: 1

네임드 반환 값

반환 타입에서 변수 이름을 미리 정의하면 코드가 더 읽기 쉬워집니다.

swift
func minMax(array: [Int]) -> (min: Int, max: Int)? {
    guard let first = array.first else {
        return nil
    }

    var minValue = first
    var maxValue = first

    for value in array[1..<array.count] {
        if value < minValue {
            minValue = value
        } else if value > maxValue {
            maxValue = value
        }
    }
    return (minValue, maxValue)
}

함수 호출 시에도 반환된 값을 쉽게 접근할 수 있습니다.

swift
if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) {
    print("Min is \(bounds.min), Max is \(bounds.max)")
}
// 출력: Min is -6, Max is 109

익명 함수 (클로저)

Swift에서 클로저는 이름이 없는 함수로, 일반 함수와 동일하게 매개변수와 반환 값을 가질 수 있습니다. 클로저는 {}로 감싸여 정의됩니다.

swift
let multiplyClosure = { (a: Int, b: Int) -> Int in
    return a * b
}

let product = multiplyClosure(4, 5)
print(product) // 출력: 20

클로저는 변수에 저장할 수 있고, 다른 함수의 매개변수로 전달할 수도 있습니다.

swift
func performOperation(_ a: Int, _ b: Int, operation: (Int, Int) -> Int) -> Int {
    return operation(a, b)
}

let result = performOperation(4, 2, operation: { $0 / $1 })
print(result) // 출력: 2

요약

이 글에서는 Swift 함수에 대해 기초부터 심화까지 살펴보았습니다. 함수의 정의와 호출 방법, 매개변수의 다양한 사용 및 반환 값 처리 방법에 대해 공부했습니다. 이를 통해 Swift 함수의 강력한 기능을 활용하여 더욱 효율적이고 읽기 쉬운 코드를 작성할 수 있습니다.