1. 프로퍼티
- 프로퍼티는 구조체, 클래스, 열거형 내부에 구현 (열거형은 연산 프로퍼티만 구현 가능)
- 프로퍼티 유형
- 저장 프로퍼티
- 종류 : 인스턴스 저장 프로퍼티 / 타입 저장 프로퍼티 / 지연 저장 프로퍼티
- 연산 프로퍼티
- 종류 : 인스턴스 연산 프로퍼티 / 타입 연산 프로퍼티
2. 정의
- 저장 프로퍼티 : class, struct 안에서 선언된 변수 또는 상수
- 연산 프로퍼티 : 값을 직접 저장하지 않고 호출될 때 계산된 값을 반환
- class, struct, enum 사용 가능
- var로만 선언 가능
- 연산 프로퍼티는 읽기전용(getter)으로 구현 가능
하지만 쓰기전용(setter)으로만 구현하는 것은 불가
- set 블럭에서 암시적 매개변수 newValue 사용 가능
struct Student {
var name: String = ""
var `class`: String = "Swift"
var koreanAge: Int = 0
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
}
static var typeDescription: String = "학생"
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다"
}
}
static var selfIntroduction: String {
return "학생타입입니다"
}
}
print(Student.selfIntroduction)
var std: Student = Student()
std.koreanAge = 30
std.name = "쏘니"
print(std.selfIntroduction)
3. 응용
struct Money {
var currencyRate: Double = 1100
var dollar: Double = 0
var won: Double {
get {
return dollar * currencyRate
}
set {
dollar = newValue / currencyRate
}
}
}
var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000
print(moneyInMyPocket.won)
moneyInMyPocket.dollar = 15
print(moneyInMyPocket.won)
4. 지역변수 및 전역변수
- 저장/연산 프로퍼티 기능은 지역/전역 변수에 사용 가능
var a:Int = 100
var b:Int = 150
var sum: Int {
return a + b
}
print(sum)