Swift #12: 함수

발행: (2025년 12월 14일 오전 04:13 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

함수 정의

함수는 중괄호({)로 구분되는 코드 블록이며 이름으로 식별됩니다. 반복문이나 조건문에서 사용하는 코드 블록과 달리, 함수는 동작하기 위해 어떤 조건을 만족할 필요가 없습니다; 함수의 코드 라인은 호출될 때마다 실행됩니다.

함수가 호출되면 프로그램 실행은 함수 내부로 이동하고, 함수가 끝나면 호출한 위치로 돌아가 이전 실행을 계속합니다.

func f1() { // 선언 및 정의
    let x = 1 + 2 // 3
}

f1() // 호출
var counter = 0
while counter  // (원본에 코드가 누락됨)

Swift에서는 -> 뒤에 반환 타입을 명시하고 return 키워드를 사용하여 값을 반환할 수 있습니다. 반환문이 유일한 경우 return을 생략할 수 있습니다.

func f2(a: Int, b: Int) -> Int {
    return a + b
}
let x1 = f2(a: 1, b: 2) // 3
let x2 = f2(a: 2, b: 5) // 7
func f3(a: Int, b: Int) -> Int {
    a + b
}

함수 오버로드

매개변수의 개수나 타입이 다르면 같은 이름의 함수를 여러 개 정의할 수 있습니다.

func f(value: Int) -> Int {
    value + 1
}
func f(value: String) -> Int {
    value.count
}
print(f(value: "Hola")) // 4
print(f(value: 1))      // 2

반환 타입만 다르게 오버로드하면 모호성이 발생할 수 있습니다:

func f(value: Int) -> Int {
    value + 1
}
func f(value: Int) -> Double {
    Double(value) + 1.0
}
let result = f(value: 1) // Error: Ambiguous use of 'f(value:)'

이를 해결하려면 컴파일러에 추가 정보를 제공해야 합니다:

let result: Double = f(value: 1) // ✅
print(result) // 2.0

제네릭 함수

여러 함수가 동일한 로직을 공유하지만 매개변수 타입만 다를 때 제네릭 함수를 사용할 수 있습니다:

func f<T>(value: T) -> String {
    "Valor: \(value)"
}
let r1 = f(value: 1)          // "Valor: 1"
let r2 = f(value: "Hola")     // "Valor: Hola"

여러 제네릭 타입을 동시에 사용할 수도 있습니다:

func f<T, U>(value1: T, value2: U) -> String {
    "Valores: \(value1) \(value2)"
}
let r1 = f(value1: 1, value2: 0.5)          // "Valores: 1 0.5"
let r2 = f(value1: "Hola", value2: "Chao")   // "Valores: Hola Chao"

표준 라이브러리

Swift에 미리 정의된 일부 함수와 연산자:

  • print(_:) – 콘솔에 값을 출력합니다.
  • abs(_:) – 정수의 절대값을 반환합니다.
  • max(_:_:) – 두 값 중 큰 값을 반환합니다.
  • min(_:_:) – 두 값 중 작은 값을 반환합니다.

프로그램 실행을 중단하는 함수

(내용이 아직 채워지지 않은 섹션)

Back to Blog

관련 글

더 보기 »

알고리즘에서 모험으로

!‘From Algorithms to Adventures’ 표지 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-...

Python Turtle 모듈로 도형 그리기

Python Turtle Module을 탐구하는 단계별 튜토리얼. “Drawing Shapes with the Python Turtle Module” 게시물이 처음으로 Towards Data Science에 게재되었습니다....