이번에는 연산 프로퍼티의 역할을 학습해보자
Computed Property (연산 프로퍼티)
저장 공간을 따로 갖고 있지않고 저장 프로퍼티의 값을 읽어 연산을 실행하거나
프로퍼티로 전달 받은 값을 다른 프로퍼티에 저장하는 역할을 한다.
특징
1) 항상 var로 선언되야한다.
2) getter 와 setter가 존재한다.
3) getter는 필수지만, setter는 필수가 아니다.
4) setter를 명시하지 않으면 get-only가 된다.
종류
인스턴스 연산 프로퍼티 | 타입 연산 프로퍼티 | |
사용 프로퍼티 종류 | 인스턴스 저장 프로퍼티 | 타입 저장 프로퍼티 |
lzay 동작 여부 | X | O |
예시 코드
class Human {
var name: String = "BOOST CAMP" // 인스턴스 저장 프로퍼티
static var typeName: String = "Type" // 타입 저장 프로퍼티
var getOnlyAlias: String {
return name + "GetOnly"
}
// ❌ 에러발생
var setOnlyAlias: String { // get은 옵션이 아닌 필수
set {
name = newValue
}
}
var getSetAlias: String {
get {
return name + "GetSet"
}
set {
name = newValue
}
}
// ❌ 에러발생
static var staticGetOnlyAlias: String { // 타입 연산 프로퍼티이므로 인스턴스 저장 프로퍼티로 사용 불가
return name + "staticGetOnlyAlias"
}
static var staticGetOnlyAlias: String {
return typeName + "staticGetOnlyAlias"
}
static var staticGetSetAlias: String {
get {
return typeName + "staticGetSet"
}
set {
typeName = newValue //typeName 변경됨
}
}
}
var human = Human()
Human.staticGetSetAlias = "TypeChange"
print(Human.typeName) // TypeChange
'프로그래밍언어 > swift' 카테고리의 다른 글
property 학습하기 (4) [ Property Observer ] (0) | 2024.08.25 |
---|---|
property 학습하기 (3) [ Type Property ] (0) | 2024.08.25 |
property 학습하기 (1) [ Stored Property ] (0) | 2024.08.25 |
protocol 학습하기 (4) [ any, some ] (0) | 2024.08.25 |
protocol 학습하기 (3) [ associatedtype ] (0) | 2024.08.25 |