Swift 함수 기초부터 심화까지: 정의, 호출, 매개변수 및 반환 값 다루기
Swift 함수 기초부터 심화까지: 정의, 호출, 매개변수 및 반환 값 다루기
Swift는 강력하고 사용하기 쉬운 프로그래밍 언어로, 특히 함수형 프로그래밍 패러다임을 구현하는 데 탁월합니다. 이 글에서는 함수의 기본 개념부터 고급 주제까지 다루면서 Swift 함수에 대한 전반적인 이해를 돕고자 합니다.
함수의 정의
Swift에서 함수는 func
키워드를 사용해 정의합니다. 함수는 특정 작업을 수행하는 코드의 블록으로 매개변수를 받을 수 있고, 값을 반환할 수도 있습니다. 기본적인 함수의 형태는 다음과 같습니다.
swiftfunc sayHello() { print("Hello, World!") }
이 예제에서는 sayHello
라는 이름의 함수를 정의하고, 이 함수는 호출되면 문자열 "Hello, World!"를 출력합니다.
함수의 호출
정의된 함수를 호출하는 것은 매우 간단합니다. 함수 이름 뒤에 괄호를 붙여 호출할 수 있습니다.
swiftsayHello() // 출력: Hello, World!
매개변수 받기
함수는 입력 값을 받을 수 있도록 매개변수를 정의할 수 있습니다. 매개변수는 괄호 안에 콜론으로 구분하여 작성합니다.
swiftfunc greet(name: String) { print("Hello, \(name)!") }
함수를 호출할 때는 해당 매개변수에 값을 전달해야 합니다.
swiftgreet(name: "Alice") // 출력: Hello, Alice!
다중 매개변수
Swift 함수는 여러 개의 매개변수를 받을 수 있습니다. 각 매개변수는 쉼표로 구분합니다.
swiftfunc greet(userName: String, age: Int) { print("Hello, \(userName)! You are \(age) years old.") }
함수를 호출할 때는 모든 매개변수에 값을 전달해야 합니다.
swiftgreet(userName: "Bob", age: 30) // 출력: Hello, Bob! You are 30 years old.
기본 매개변수 값
매개변수에는 기본 값을 지정할 수 있으며, 이 경우 호출 시 해당 매개변수를 생략할 수 있습니다.
swiftfunc greet(name: String = "Guest") { print("Hello, \(name)!") }
기본 값이 설정된 매개변수는 생략할 수 있습니다.
swiftgreet() // 출력: Hello, Guest! greet(name: "Charlie") // 출력: Hello, Charlie!
반환 값
함수는 작업을 수행한 후 결과를 반환할 수 있습니다. ->
키워드를 사용해 반환 타입을 정의합니다.
swiftfunc add(a: Int, b: Int) -> Int { return a + b }
함수를 호출하고 반환 값을 변수에 저장할 수 있습니다.
swiftlet result = add(a: 3, b: 5) print(result) // 출력: 8
다중 반환 값
Swift 함수는 튜플을 사용하여 여러 값을 반환할 수 있습니다.
swiftfunc divide(a: Int, b: Int) -> (quotient: Int, remainder: Int) { return (a / b, a % b) }
반환된 튜플 값을 개별 변수에 저장할 수 있습니다.
swiftlet results = divide(a: 10, b: 3) print("Quotient: \(results.quotient), Remainder: \(results.remainder)") // 출력: Quotient: 3, Remainder: 1
네임드 반환 값
반환 타입에서 변수 이름을 미리 정의하면 코드가 더 읽기 쉬워집니다.
swiftfunc 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) }
함수 호출 시에도 반환된 값을 쉽게 접근할 수 있습니다.
swiftif 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에서 클로저는 이름이 없는 함수로, 일반 함수와 동일하게 매개변수와 반환 값을 가질 수 있습니다. 클로저는 {}
로 감싸여 정의됩니다.
swiftlet multiplyClosure = { (a: Int, b: Int) -> Int in return a * b } let product = multiplyClosure(4, 5) print(product) // 출력: 20
클로저는 변수에 저장할 수 있고, 다른 함수의 매개변수로 전달할 수도 있습니다.
swiftfunc 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 함수의 강력한 기능을 활용하여 더욱 효율적이고 읽기 쉬운 코드를 작성할 수 있습니다.