기본 형태
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 |