Swift - 일급 함수란?
Swift - 일급 함수란?
일급 함수란?
일급 함수란 함수가 일급 객체로 취급되는 것을 의미함.
일급 함수의 조건
- 런타임에도 함수 생성 가능
- 매개 변수나 반환값으로 함수 사용 가능
- 변수나 데이터 구조안에 저장 가능
- 함수의 이름과 관계 없이 고유 식별이 가능해야함
함수를 변수와 상수 안에 할당 가능
- 함수를 변수 안에 할당해서 사용이 가능함.
- 이때 변수의 데이터 타입은 일반적으로 사용되는
String,Int같은 타입이 아닌 함수 타입으로 선언됨.
함수 타입 형식
1
(인자타입, 인자타입, ...) -> 반환 타입
반환 타입이 없는 경우
Void또는()를 명시해줘야함.
예시
1
2
3
4
5
6
7
func test(ex: Int) -> String{
return "ex: \(ex)"
}
var fn: (Int) -> String = test
print(fn(10))
결과
1
ex: 10
만약 같은 이름을 가진 함수를 변수에 할당한다면 함수 타입으로 구분해야하며, 함수 타입까지 동일하다면 함수 식별자를 통해 구분해야함.
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
func test(ex: Int) -> String{
return "ex: \(ex)"
}
func test(ex2: Int) -> String{
return "ex2: \(ex2)"
}
var fn: (Int) -> String = test(ex:)
print(fn(10))
var fn2: (Int) -> String = test(ex2:)
print(fn2(19))
결과
1
2
ex: 10
ex2: 19
함수의 반환값으로 함수 사용 가능
- 함수의 반환값으로 함수를 사용 가능함.
- 이때 반환 타입은 함수 타입으로 명시함.
예시
1
2
3
4
5
6
7
8
9
10
func printInt(){
print(20)
}
func returnFn() -> () -> Void{
return printInt
}
var fn: () -> Void = returnFn()
fn()
결과
1
20
함수의 매개 변수로 함수를 받을 수 있음
- 함수를 매개 변수로 받아 콜백 함수로 처리가 가능함.
콜백 함수란 특정 시점이나 조건이 만족했을 때 실행되도록 넘겨주는 함수를 의미함.
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func successHandler(){
print("함수 처리 성공")
}
func failHandler(){
print("함수 처리 실패")
}
func test(num: Int, success sFunc: () -> Void, fail fFunc: () -> Void){
guard num > 0 else{
fFunc()
return
}
print(num)
sFunc()
}
test(num: 10, success: successHandler, fail: failHandler)
결과
1
2
10
함수 처리 성공
This post is licensed under CC BY 4.0 by the author.