IOS개발: SWIFT/3. 함수의 세계로

Swift 함수 정의와 호출: 인자, 반환값, 함수 오버로딩

_Blue_Sky_ 2024. 9. 12. 15:09
728x90
728x90

Swift 함수 정의와 호출: 인자, 반환값, 함수 오버로딩 상세 설명

Swift에서 함수는 코드의 특정 작업을 수행하는 재사용 가능한 블록입니다. 함수를 정의하고 호출하는 방법, 인자와 반환값의 사용, 그리고 함수 오버로딩에 대해 자세히 알아보겠습니다.

1. 함수 정의

함수를 정의할 때는 다음과 같은 형식을 사용합니다.

func 함수이름(매개변수 목록) -> 반환 타입 {
    // 함수의 실행 코드
}
 
  • 함수 이름: 함수를 식별하기 위한 고유한 이름입니다.
  • 매개변수 목록: 함수에 전달되는 값을 나타내는 변수 목록입니다. 매개변수는 없을 수도 있고, 여러 개일 수도 있습니다.
  • 반환 타입: 함수가 실행된 후 반환하는 값의 타입입니다. 반환 값이 없을 경우 Void를 생략할 수 있습니다.

예시:

func greet(name: String) -> String {
    return "Hello, \(name)!"
}
 

위 예시에서는 greet이라는 이름의 함수를 정의했습니다. 이 함수는 name이라는 문자열 타입의 매개변수를 받아서 "Hello, (이름)!"이라는 문자열을 반환합니다.

2. 함수 호출

정의된 함수를 호출하려면 함수 이름 뒤에 괄호 ()를 쓰고, 필요한 경우 매개변수를 괄호 안에 전달합니다.

let greeting = greet(name: "Swift")
print(greeting) // 출력: Hello, Swift!
 

3. 인자

  • 외부 매개변수 이름: 함수를 호출할 때 사용하는 이름입니다.
  • 내부 매개변수 이름: 함수 내부에서 사용하는 이름입니다.
  • 기본값: 매개변수에 기본값을 지정하면 호출 시 해당 매개변수를 생략할 수 있습니다.
  • 인-아웃 매개변수: 함수 내부에서 매개변수의 값을 변경하고, 그 변경된 값을 호출한 곳으로 반환할 수 있습니다.
func greet(to name: String, from greeting: String = "Hello") {
    print("\(greeting), \(name)!")
}

greet(to: "Swift") // 출력: Hello, Swift!
greet(to: "World", from: "Hi") // 출력: Hi, World!
 

4. 반환값

함수는 값을 반환하지 않거나, 하나 이상의 값을 반환할 수 있습니다. 여러 값을 반환할 때는 튜플을 사용합니다.

func calculate(radius: Double) -> (area: Double, circumference: Double) {
    let π = 3.14159
    let area = π * radius * radius
    let circumference = 2 * π * radius
    return (area, circumference)
}
 

5. 함수 오버로딩

함수 오버로딩은 같은 이름의 함수를 여러 개 정의하는 것을 의미합니다. 단, 매개변수의 타입이나 개수가 달라야 합니다. 컴파일러는 함수 호출 시 전달되는 인자의 타입과 개수를 기반으로 어떤 함수를 호출할지 결정합니다.

func add(x: Int, y: Int) -> Int {
    return x + y
}

func add(x: Double, y: Double) -> Double {
    return x + y
}
 

6. 함수형 프로그래밍과 고차 함수

Swift는 함수형 프로그래밍을 지원하며, 함수를 값처럼 다룰 수 있습니다. 고차 함수는 다른 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다.

func apply(operation: (Int, Int) -> Int, x: Int, y: Int) -> Int {
    return operation(x, y)
}

let result = apply(operation: +, x: 5, y: 3) // result는 8
 

7. 클로저

클로저는 함수를 간결하게 표현하는 방법입니다. 익명 함수라고도 합니다.

let numbers = [1, 2, 3, 4, 5]
let sortedNumbers = numbers.sorted { $0 > $1 }
 

결론

Swift의 함수는 강력하고 유연하며, 다양한 방식으로 사용될 수 있습니다. 함수를 효과적으로 활용하면 코드의 가독성을 높이고 재사용성을 향상시킬 수 있습니다.

728x90
728x90