Programming Languages/Swift

Functions (함수) / Closures

꼰대코더 2025. 12. 26. 23:12

기본 형태

func name(param: Type) -> ReturnType { ... }

핵심 포인트

  • 매개변수, 반환값 모두 선택 사항
  • 호출 시 argument label 사용
  • 단일 표현식이면 return 생략 가능

주요 기능 정리

기능문법 / 예
함수 정의 func f() {}
매개변수 func f(x: Int)
반환값 func f() -> Int
호출 f(x: 10)
암묵적 return func f() -> Int { 10 }     ※ 한줄코드의 경우 return 생략 가능
매개변수의 별칭 func f(forValue x: Int) ※ 호출하는 쪽은 f(forValue : 50)

 

📌 Nested Functions (중첩 함수)

기능설명
함수 안의 함수 함수 내부에 정의
외부 변수 접근 가능 (클로저처럼 동작)
용도 로직 분리, 가독성 향상
func outer() {
    func inner() { }
}

📌 Functions as First-Class Types

반환값으로 함수

func approximateValueOfPi1() -> Double {
    3.14159
}

func pi() -> (() -> Double) {
          approximateValueOfPi1
}
 
pi()()
개념설명
함수 반환 함수 자체를 반환
호출 pi()() (함수 → 함수 실행)  ※  함수의 포인터를 리턴한다고 생각하면 OK

매개변수로 함수

func check(list: [Int], condition: (Int)->Bool)

※ 호출시에는 check 의 두번째 파라미터로 condition: (Int)->Bool 타입의 함수를 넘겨줌.

기능설명

조건 전달 함수로 로직 전달
활용 필터, 검사, 콜백

📌 guard (조기 종료)

기능설명
유효성 검사 조건 실패 시 즉시 종료
Optional 처리 안전한 언래핑
필수 패턴 실무에서 매우 빈번
 
guard let x = Int(str) else { return }

 

📌 Closures (클로저)

기본 형태

{ (param: Type) -> ReturnType in code }

핵심 특징

  • 이름 없는 함수
  • 변수/상수에 할당 가능
  • 함수 인자로 자주 사용

Closure 축약 규칙

단계예
전체 { (x:Int)->Int in return x*x }
타입 생략 { x in x*x }
괄호 생략 map { x in x*x }
위치 인자 map { $0 * $0 }

'Programming Languages > Swift' 카테고리의 다른 글

Concurrency  (0) 2025.12.26
Protocols / Extensions/ Error Handling  (0) 2025.12.26
Class / Struct  (0) 2025.12.26
Swift / C++ Collection Types 비교  (0) 2025.12.26
Swift vs C/C++ 문법 비교  (0) 2025.12.19