함수 : 일급 객체 실습
swift의 함수는 1급 객체이다.
1급 객체(first class object) 또는 1급 시민(first class citizen)
다음 조건을 충족하는 객체를 1급 객체라고 한다.
1) 변수에 저장할 수 있다.
2) 매개변수로 전달할 수 있다.
3) 리턴값으로 사용할 수 있다.
func up(num: Int) -> Int {
return num + 1
}
func down(num: Int) -> Int {
return num - 1
}
let toUp = up //up함수를 toUp에 저장 - 조건 1)변수에 저장할 수 있다.
print(up(num:10)) //11
print(toUp(10)) //11
let toDown = down //down함수를 toDown에 저장
func upDown(Fun: (Int) -> Int, value: Int) {
let result = Fun(value)
print("결과 = \(result)")
}
upDown(Fun:toUp, value: 10) //toUp(10), 11
//toUp을 매개변수로 전달 - 조건 2)매개변수로 전달할 수 있다.
upDown(Fun:toDown, value: 10) //toDown(10), 9
func decideFun(x: Bool) -> (Int) -> Int {
//매개변수형 리턴형이 함수형
if x {
return toUp //리턴값으로 사용 - 조건 3)리턴값으로 사용할 수 있다.
} else {
return toDown //리턴값으로 사용
}
}
let r = decideFun(x:true) // let r = toUp
print(type(of:r)) //(Int) -> Int
print(r(10)) // toUp(10), 11
let t = decideFun(x:false) // let t = toDown
print(type(of:t)) //(Int) -> Int
print(t(10)) //toDown(10), 9
'Swift' 카테고리의 다른 글
Swift 정리 : 클로저 축약 표현 (0) | 2022.10.11 |
---|---|
Swift 정리 : 클로저 (0) | 2022.10.11 |
Swift 정리 : guard let (0) | 2022.10.11 |
Swift 정리 : Call by reference 구현 (0) | 2022.10.11 |
Swift 정리 : 가감 매개변수(variadic parameter) (0) | 2022.10.04 |