프로퍼티 감시자
- 프로퍼티 감시자를 사용하면 프로퍼티 값이 변경될 때 원하는 동작을 수행할 수 있음
import Foundation
struct Money {
// 프로퍼티 감시자 사용
var currencyRate: Double = 1100 { // currencyRate라는 프로퍼티 값이 변경이 될때 willSet, didSet이 실행
willSet(newRate) { // 바뀔 값이 들어옴
print("환율이 \(currencyRate)에서 \(newRate)으로 변결될 예정입니다")
}
didSet(oldRate) { // 바뀌기 전 값이 들어옴
print("환율이 \(oldRate)에서 \(currenyRate)으로 변경되었습니다")
}
}
// 프로퍼티 감시자 사용
var dollar: Double = 0 {
// willSet의 암시적 매개 변수 이름 newValue
willSet {
print("\(dollar)달러에서 \(newValue)달러로 변경될 예정입니다")
}
// didSet의 암시적 매개 변수 이름 oldValue
didSet {
print("\(oldValue)달러에서 \(dollar)달러로 변경되었습니다")
}
}
// 연산 프로퍼티
// 연산 프로퍼티 안에는 프로퍼티 감시자를 만들 수 없음
// willSet, didSet은 저장되는 값이 호출될때 적용
var won: Double {
get {
return dollar * currencyRate
}
set {
dollar = newValue / currenctRate
}
}
var moneyInMyPocket: Money = Money()
// 환율이 1100.0에서 1150.0으로 변경될 예정입니다
MoneyInmyPocket.currencyRate = 1150
// 환율이 1100.0에서 1150.0으로 변경되었습니다
// 0.0달러에서 10.0달러로 변경될 예정입니다
moneyInMyPocket.dollar = 10
// 0.0달러에서 10.0달러로 변경되었습니다
print(moneyInmyPocket.won)
// 11500.0
}
var a: Int = 100 {
willSet {
print("\(a)에서 \(newValue)로 변경될 예정입니다")
}
didSet {
print("\(oldValue)에서 \(a)로 변경되었습니다")
}
// 100에서 200으로 변경될 예정입니다
a = 200
// 100에서 200으로 변경되었습니다
'Swift > 문법' 카테고리의 다른 글
인스턴스의 생성과 소멸(init / deinit) (0) | 2021.01.29 |
---|---|
상속(inheritance) (0) | 2021.01.28 |
프로퍼티(property) (0) | 2021.01.28 |
클로저 고급 (0) | 2021.01.28 |
클로저(Closure) (0) | 2021.01.28 |