포스트

문법 (8) 함수 (func)

Swift에서 함수를 정의하고 사용하는 방법을 설명합니다.

문법 (8) 함수 (func)

함수 (Function)

Swift에서 함수(func)는 특정 작업을 수행하는 코드 블록입니다. 코드 재사용성을 높이고 가독성을 개선하는 데 도움을 줍니다.


1. 기본 함수 선언

함수는 func 키워드를 사용하여 선언합니다.

1
2
3
4
5
func greet() {
    print("Hello, Swift!")
}

greet()  // Hello, Swift!

2. 매개변수를 받는 함수

함수는 매개변수를 받아서 동작할 수 있습니다.

1
2
3
4
5
func greetUser(name: String) {
    print("Hello, \(name)!")
}

greetUser(name: "Alice")  // Hello, Alice!

3. 반환값이 있는 함수

1
2
3
4
5
6
func add(a: Int, b: Int) -> Int {
    return a + b
}

let sum = add(a: 5, b: 3)
print(sum)  // 8

4. 매개변수 기본값

기본값을 설정하면 함수 호출 시 해당 인수를 생략할 수 있습니다.

1
2
3
4
5
6
func welcomeUser(name: String = "Guest") {
    print("Welcome, \(name)!")
}

welcomeUser()         // Welcome, Guest!
welcomeUser(name: "Bob")  // Welcome, Bob!

5. 가변 매개변수

여러 개의 인수를 받을 때는 가변 매개변수를 사용할 수 있습니다.

1
2
3
4
5
func sumNumbers(numbers: Int...) -> Int {
    return numbers.reduce(0, +)
}

print(sumNumbers(numbers: 1, 2, 3, 4, 5))  // 15

6. 내부 & 외부 매개변수 이름

1
2
3
4
5
func introduce(person name: String, age: Int) {
    print("이름: \(name), 나이: \(age)")
}

introduce(person: "Alice", age: 25)
  • person외부 매개변수 이름 (함수 호출 시 사용)
  • name내부 매개변수 이름 (함수 내부에서 사용)

7. 반환값 생략 가능

단일 표현식인 경우 return 키워드를 생략할 수 있습니다.

1
2
3
4
5
func multiply(a: Int, b: Int) -> Int {
    a * b
}

print(multiply(a: 4, b: 5))  // 20

8. 중첩 함수 (Nested Function)

함수 내부에 함수를 선언할 수도 있습니다.

1
2
3
4
5
6
7
8
func outerFunction() {
    func innerFunction() {
        print("내부 함수 실행")
    }
    innerFunction()
}

outerFunction()

9. inout 매개변수 (값 변경 가능)

inout을 사용하면 함수 내부에서 매개변수 값을 변경할 수 있습니다.

1
2
3
4
5
6
7
8
9
func swapValues(_ a: inout Int, _ b: inout Int) {
    let temp = a
    a = b
    b = temp
}

var x = 10, y = 20
swapValues(&x, &y)
print(x, y)  // 20, 10

10. 고차 함수와 클로저

Swift에서는 함수를 매개변수로 전달하거나, 함수 자체를 반환할 수 있습니다.

1
2
3
4
5
6
func operateOnNumbers(_ a: Int, _ b: Int, operation: (Int, Int) -> Int) -> Int {
    return operation(a, b)
}

let result = operateOnNumbers(5, 3, operation: { $0 + $1 })
print(result)  // 8

11. 함수 타입과 반환 함수

함수는 데이터 타입으로 사용할 수 있습니다.

1
2
3
4
5
6
func addTwoNumbers(a: Int, b: Int) -> Int {
    return a + b
}

var operation: (Int, Int) -> Int = addTwoNumbers
print(operation(2, 3))  // 5

함수를 반환할 수도 있습니다.

1
2
3
4
5
6
func chooseOperation(addition: Bool) -> (Int, Int) -> Int {
    return addition ? (+) : (-)
}

let selectedOperation = chooseOperation(addition: true)
print(selectedOperation(10, 5))  // 15

결론

Swift 함수는 재사용성, 코드 모듈화, 유지보수성을 높이는 중요한 개념입니다.
다음 글에서는 클로저(Closure)에 대해 다뤄보겠습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.