First-class citizen: 일급객체, 특정 요소가 다른 값들과 동일하게 취급될 수 있는 성질을 말한다.
일급 객체는 다음과 같은 속성을 가진다.
1. 변수에 할당 가능
2. 함수의 인자로 전달 가능
3. 함수의 반환값으로 사용 가능
4. 데이터 구조 안에 저장 가능
한 마디로 요약하면, 변수나 상수로 쓰일 수 있다는 것이다.
Swift는 함수를 일급 객체로 사용한다. 따라서 함수를 변수에 할당하거나 다른 함수의 인자로 전달할 수 있고 반환값으로 사용할 수도 있다.
1. 변수를 함수에 할당
변수를 함수에 할당하는 가장 기본적인 예를 보자. 해당 예시에서는 변수 greet에 sayHello 함수를 할당하였다.
func sayHello(){
print("Hello")
}
// 함수 자체를 변수에 할당
let greet = sayHello
// 변수를 사용해 함수 호출
greet() // Hello
sayHello 라는 함수 자체를 greet 라는 변수에 할당항고 greet()를 호출하니 원래 함수 sayHello()가 호출된 것과 똑같이 동작한다.
2. 함수 인자로 함수 전달
// 함수를 인자로 받는 함수
func performAction(action: () -> ()){
action()
}
// 호출할 함수
func sayGoodbye(){
print("Goodbye!")
}
// 함수를 인자로 전달
performAction(action: sayGoodbye) // Goodbye!
performAction이라는 함수가 다른 함수를 인자로 받아서 그 함수를 실행한다.
3. 함수의 반환값으로 함수 전달
// 함수의 반환값으로 함수 전달
func createGreeting() -> () -> Void {
return{
print("Hi, there!")
}
}
// 함수를 반환받아 실행
let greetingFunc = createGreeting()
greetingFunc() // Hi, there
createGreeting 함수를 다른 함수를 반환한다. 반환된 함수는 이후에 greetingFunc()으로 호출할 수 있다.
() -> () -> Void의 뜻을 알아보자.
외부함수: () -> (내부 함수)
내부함수: () -> Void
createGreeting 함수는 () -> Void 타입의 함수를 반환한다. 즉, createGreeting()를 호출하면 내부 함수가 반환된다.
return{...} 이 내부 함수이다.
반환된 함수를 변수 greetingFunc에 할당한다.
greetingFunc은 이제 함수이므로 호출할 수가 있다.
'프론트엔드 > Swift' 카테고리의 다른 글
[Swift] 옵셔널 변수와 상수 사용하기 (2) | 2024.10.09 |
---|---|
[Swift] ImageView app 화면 만들기 (12) | 2024.10.06 |
[Swift] 기본적인 ViewController 함수 파악하기 (1) | 2024.10.05 |
[Swift] Swift로 Hello World 앱 화면 꾸미기 (4) | 2024.10.05 |