오늘은 일급객체에 대해서 얘기해 보겠습니다.
일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
입급 객체는 다음과 같은 특징을 갖는데
- 변수나 데이터 구조에 할당할 수 있어야 합니다
- 인자로 전달할 수 있어야 합니다
- 반환값으로 사용할 수 있어야 합니다
- 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다.
swift에서는 함수를 일급 객체로 취급합니다.
이 말은 즉 함수를 위에 특징에 적용할 수 있다는 의미입니다.
- 함수를 변수나 데이터 구조에 할당
func sayHelloWorld(){
print("Hello World!")
}
func sayLoveYou(){
print("Love you!")
}
let start = sayHelloWorld() //함수를 변수에 할당
var functionArray: [(Void) -> Void] = [] // 함수 타입의 배열(데이터 구조) 선언
functionArray.append(sayHelloWorld)
functionArray.append(sayLoveYou)
start()
/*
출력
Hello World!
*/
for function in functionArray{
functioin()
}
/*
출력
Hello World!
Love you!
*/
- 인자로 전달할 수 있어야 합니다
func calculate(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
func add(a: Int, b: Int) -> Int {
return a + b
}
func subtract(a: Int, b: Int) -> Int {
return a - b
}
let result1 = calculate(a: 5, b: 3, operation: add) // 함수를 인자로 전달
print(result1) // 출력: 8
let result2 = calculate(a: 10, b: 4, operation: subtract) // 다른 함수를 인자로 전달
print(result2) // 출력: 6
- 반환값으로 사용할 수 있어야 합니다
func createMultiplier(_ multiplier: Int) -> (Int) -> Int {
//createMultiplier함수안에 multiplierFunction함수를 정의
func multiplierFunction(_ value: Int) -> Int {
return value * multiplier
}
return multiplierFunction //multiplierFunction함수를 반환
}
let multiplyByTwo = createMultiplier(2) // 함수를 반환
let result1 = multiplyByTwo(5) // 반환된 함수에 인자 5를 입력 후 해당 함수를 변수에 할당
print(result1) // 출력: 10
let multiplyByThree = createMultiplier(3)
let result2 = multiplyByThree(4)
print(result2) // 출력: 12
'Swift🐤' 카테고리의 다른 글
Swift) 열거형(enum) (1) | 2023.10.09 |
---|---|
Swift) Nested Function (0) | 2023.09.06 |
Swift) Property Observers(프로퍼티 옵져버) (0) | 2023.09.04 |
Swift) collection types(and tuple) (0) | 2023.09.04 |
Swift) ARC(Automatic Reference Counting) (0) | 2023.09.01 |
오늘은 일급객체에 대해서 얘기해 보겠습니다.
일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
입급 객체는 다음과 같은 특징을 갖는데
- 변수나 데이터 구조에 할당할 수 있어야 합니다
- 인자로 전달할 수 있어야 합니다
- 반환값으로 사용할 수 있어야 합니다
- 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별할 수 있다.
swift에서는 함수를 일급 객체로 취급합니다.
이 말은 즉 함수를 위에 특징에 적용할 수 있다는 의미입니다.
- 함수를 변수나 데이터 구조에 할당
func sayHelloWorld(){
print("Hello World!")
}
func sayLoveYou(){
print("Love you!")
}
let start = sayHelloWorld() //함수를 변수에 할당
var functionArray: [(Void) -> Void] = [] // 함수 타입의 배열(데이터 구조) 선언
functionArray.append(sayHelloWorld)
functionArray.append(sayLoveYou)
start()
/*
출력
Hello World!
*/
for function in functionArray{
functioin()
}
/*
출력
Hello World!
Love you!
*/
- 인자로 전달할 수 있어야 합니다
func calculate(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
func add(a: Int, b: Int) -> Int {
return a + b
}
func subtract(a: Int, b: Int) -> Int {
return a - b
}
let result1 = calculate(a: 5, b: 3, operation: add) // 함수를 인자로 전달
print(result1) // 출력: 8
let result2 = calculate(a: 10, b: 4, operation: subtract) // 다른 함수를 인자로 전달
print(result2) // 출력: 6
- 반환값으로 사용할 수 있어야 합니다
func createMultiplier(_ multiplier: Int) -> (Int) -> Int {
//createMultiplier함수안에 multiplierFunction함수를 정의
func multiplierFunction(_ value: Int) -> Int {
return value * multiplier
}
return multiplierFunction //multiplierFunction함수를 반환
}
let multiplyByTwo = createMultiplier(2) // 함수를 반환
let result1 = multiplyByTwo(5) // 반환된 함수에 인자 5를 입력 후 해당 함수를 변수에 할당
print(result1) // 출력: 10
let multiplyByThree = createMultiplier(3)
let result2 = multiplyByThree(4)
print(result2) // 출력: 12
'Swift🐤' 카테고리의 다른 글
Swift) 열거형(enum) (1) | 2023.10.09 |
---|---|
Swift) Nested Function (0) | 2023.09.06 |
Swift) Property Observers(프로퍼티 옵져버) (0) | 2023.09.04 |
Swift) collection types(and tuple) (0) | 2023.09.04 |
Swift) ARC(Automatic Reference Counting) (0) | 2023.09.01 |