728x90
일급객체(First-class object), 일급시민(First-class citizen)
일급객체(일급시민)의 조건
일급객체(일급시민)의 예시
1급객체(1급시민)란
1급객체란 다음 세가지의 조건을 만족하는 객체를 뜻합니다
- 변수에 저장이 가능한가?
- 매개변수로 전달이 가능한가?
- 리턴값으로 사용가능한가?
아래의 예시를 통해 설명 하겠습니다
변수에 저장 가능한 객체
func half(num: Double) -> Double{
print(#function)
return num / 2
}
let half2 = half //함수 half를 변수 half2에 저장
print(half(num:2.2))//half(num:_) 1.1
print(half2(2.2))//half(num:_) 1.1
|
cs |
Double형 값을 받아 값의 절반을 리턴하는 half함수를 선언하였습니다
half함수를 half2상수에 할당하고 매개변수를 넣으니 half()와 동일한 동작을 하는것을 확인할 수 있었습니다
단 함수를 저장한 변수,상수는 레이블을 붙일 수 없습니다
매개변수 전달이 가능한 객체
func half(num: Double) -> Double{
print(#function)
return num / 2
}
let half2 = half
func upDown(Func:(Double) -> Double, value: Double){
let result = Func(value)
print(result)
}
upDown(Func: half2, value:8.0) //half(num:) 4.0
|
cs |
upDown함수에서 (Double) -> Double 형 함수를 매개변수로 받습니다
앞서 선언했던 half함수와 같은 자료형이므로 매개변수로 half 또는 half2를 넣을 수 있습니다
함수를 매개변수로 받게 되면 upDown함수에서 half함수를 실행시키게 됩니다
리턴값 전달이 가능한 객체
func half(num: Double) -> Double{
print(#function)
return num / 2
}
let half2 = half
func decideFun() -> (Double)->Double{
return half2
}
var Re = decideFun()
print(Re(1.5))//half(num:) 0.75
|
cs |
decideFun()은 (Double)-> Double 형 함수를 리턴합니다
리턴받은 함수를 Re변수에 담아 실행시키니 half와 동일한 동작을 합니다
참고자료
iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용
728x90
반응형
'🍎iOS프로그래밍 > 오늘의 공부' 카테고리의 다른 글
Swift의 프로퍼티 [Stored property, computed property] / iOS프로그래밍 (0) | 2021.10.01 |
---|---|
Swift 클로저(Closure) 후행 클로저(trailing Closure) / iOS프로그래밍 (0) | 2021.10.01 |
Swift의 함수 형태 및 사용 / iOS프로그래밍 (0) | 2021.09.26 |
Swift의 반복문,제어문(if문, for문, repeat-whlie문 ,guard문, switch-case문) / iOS프로그래밍 (0) | 2021.09.26 |
Swift의 옵셔널(Optional) 개념 이해하기 / iOS 프로그래밍 (0) | 2021.09.17 |
댓글