일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- It
- node.js
- 개발자
- 상속
- swagger
- Kotlin
- AWS
- react
- component
- Producer
- javascript
- 개발이 취미인 사람
- Nest.js
- props
- kafka
- spring boot
- back-end
- vue
- 반복문
- 조건문
- Sequelize
- restful api
- file upload
- SWIFT
- state
- front-end
- class
- 코틀린
- 자바
- java
- Today
- Total
개발이 취미인 사람
[Swift] Swift 일급 객체 개념 및 사용법 본문
- 지난 시간
안녕하세요. 지난 시간에는 Swift에서 함수를 선언하고 사용하는 방법에 대해 알아보겠습니다.
놓치고 오신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다. :)
이번 시간에는 Swift언어에 대한 일급 객체에 대해 알아보겠습니다.
Swift는 함수형 패러다임을 따르고 있습니다. 즉, Swift라는 언어는 일급 객체(First-Class Citizen)에 부합하는 언어입니다.
- 일급 객체
일급 객체?... 일급 객체란 무엇일까요. 아래 조건을 충족한다면 1급 객체라고 할 수 있습니다.
1. 객체가 런타임에도 생성 가능하다.
2. 객체를 인자 값으로 전달할 수 있어야 한다.
3. 객체를 반환 값으로 사용할 수 있어야 한다.
4. 데이터 구조 안에 저장할 수 있어야 한다.
함수가 위 조건을 만족하는 프로그래밍 언어는 함수형 언어가 되며, 함수형 프로그래밍에서는 "함수가 일급 객체"가 될 수 있습니다.
위 글을 읽고 아마 잘 이해가 안 가실 텐데요.(제가... 그랬습니다...) 몇 가지 예시를 통해 Swift가 왜 함수형 언어이고 왜 일급 객체인지에 대해 알아보겠습니다.
- 일급 함수의 특성
1. 변수에 함수 대입 가능
일급 함수의 첫 번째 특성은 변수와 상수에 함수를 대입할 수 있습니다.
단순하게 함수를 호출하고 호출한 결과 값을 변수 또는 상수에 할당하는 게 아니라, 함수 자체를 할당할 수 있습니다.
아래 코드를 확인하면 상수에 함수 자체를 할당하는 걸 확인할 수 있습니다.
func getName(name: String) -> String {
return name
}
let name = getName(name: "개발이 취미인 사람") // 상수에 함수가 호출 된 결과 값을 할당
let nameFun = getName(name:) // 상수에 함수 자체를 할당
//식별자로 할당
let nameFun = getName(name:)
//함수 타입을 지정한 할당
let nameFun: (String) -> String = getName
2. 함수를 반환 가능
일급 객체인 함수는 반환 값으로 데이터가 아닌 함수 자체를 반환할 수 있습니다.
//덧셈 함수 선언
func plus( a:Int, b: Int) -> Int {
return a+b
}
// Int형태에 a와 b 값을 전달 받고 (Int,Int) 파라미터를 받는 함수를 반환한다.
// 그리고 두번째 호출을 통해 그 결과 자료 형태는 Int 타입이라고 선언하는 함수
func setPlus(a:Int, b: Int) -> (Int, Int) -> Int {
return plus
}
//사용법
let onPlus = setPlus(a: 1, b:2) // 함수를 반환
onPlus(1, 2) // 결과 값은 3
//바로 호출 가능
setPlus(a: 1, b: 2)(3, 2) // 결과 값 5
3. 인자로 함수를 전달 가능
일급 객체인 함수는 인자(파라미터) 값으로 변수 또는 상수가 아닌 함수를 전달할 수 있습니다.
setPlus 함수 두 번째 인자로 plus 함수를 전달하고 있습니다.
//덧셈 함수 선언
func plus( a:Int) -> Int {
print("3")
return a + 1
}
//(Int) -> Int 형태에 파라미터를 받는다.
func setPlus(a:Int, fn: (Int) -> Int) -> Int {
print("2")
return fn(a) //값 2 반환
}
print("1")
//plus 함수를 전달한다.
setPlus(a: 1, fn: plus) // 2값 반환
print("4")
// 실행 순서 1 -> 2 -> 3 -> 4
이번 시간에는 Swift 언어가 왜 일급 객체에 부합 되는지에 대해 알아봤습니다. :)
실습은 꼭 하시는 걸!! 잊지마세요.
'언어(Programming Language) > Swift' 카테고리의 다른 글
[Swift] 함수 선언 및 사용법 (0) | 2021.06.07 |
---|---|
[Swift] 반복문 개념 및 사용법 (0) | 2021.06.02 |
[Swift] 컬렉션(Array, Dictionary, Set) 개념 및 사용법 (0) | 2021.06.01 |
[Swift] 조건문 (if문 & switch/case문) (0) | 2021.05.31 |
[Swift] 자료형, 변수, 상수 개념 및 사용법 (1) | 2021.05.30 |