728x90
Swift는 함수형 패러다임을 따르고 있다.
Swift는 다중 패러다임 프로그래밍 언어이며, 아래와 같은 프로그래밍 패러다임을 차용하고 있습니다.
- 명령형 프로그래밍 패러다임
- 객체지향 프러그래밍 패러다임
- 함수형 프로그래밍 패러다임
- 프로토콜 프로그래밍 패러다임
즉, Swift라는 언어는 일급 객체(First-Class Citizen)에 부합하는 언어이다.
공식문서를 살펴보면 Swift에서 함수는 일급 객체이기 때문에 함수를 변수, 상수, 매개변수에 넣을 수 있다고 한다.
그렇다면 여기서 일급 객체란 무엇일까?
일급 객체
일급 객체란 아래 세 가지 조건을 만족하는 객체를 의미한다.
특별한 용도, 혜택이 있다는 것이 아니라 사용할 때 다른 요소들과 아무런 차별 없이 사용할 수 있는 객체이다.
- 모든 일급 객체는 함수의 실질적인 매개변수가 될 수 있다.
- 모든 일급 객체는 함수의 반환 값이 될 수 있다.
- 모든 일급 객체는 할당의 대상이 될 수 있다.
- 모든 일급 객체는 비교 연산(==, equal)을 적용할 수 있다
위의 조건들을 보면 평소에 자주 사용하는 변수도 일급 객체라고 할 수 있다.
변수들은 매개 변수, 반환값, 값 대입이 모두 가능하기 때문이다.
그리고 Swift에서 함수는 일급 객체에 해당한다.
그러므로 함수도 아래와 같이 할당이 가능하다.
func greeting(to friend: String, from me: String) {
print("Hello \(friend), I'm \(me)")
}
// 새로운 함수에 기존의 함수를 대입하여
var someFunction: (String, String) -> Void = greeting(to:from:)
// 바로 함수 형태로 사용하고 있는 것을 확인할 수 있다.
someFunction("So Kyte", "Hu Ree")
할당 뿐 아니라, 실질적인 매개변수가 될 수도 있고
let data: (Data) -> Void = { }
func doSomething(withData data: Data, action: (Data) -> Void) {
action(data)
}
doSomething(data, action)
함수의 반환 값으로 함수를 사용할 수도 있다.
let data: (Data) -> Void = { }
func getClosure() -> (Data) -> Void {
return data
}
'Swift' 카테고리의 다른 글
Attribute (@어쩌구) (0) | 2022.08.10 |
---|---|
Closure (클로저) (0) | 2022.08.10 |
Singleton Pattern (0) | 2022.08.05 |
프로토콜 (0) | 2022.08.02 |
프로퍼티 - 저장 프로퍼티 (0) | 2022.07.27 |