struct StoredProperties {
var stored: String = "stored"
// Lazy
// 호출될 때까지 초기화되지 않는다.
// 무거운 프로퍼티를 만들때 사용한다.
lazy var importer = "lazy"
// Property Observers
var storedObserver: String {
// 프로퍼티가 저장되기 전에 실행시킬 동작을 지정하는 곳
// newValue를 통해 저장 될 값에 접근 가능
willSet {
print("willSet was called")
print("stored is now equal to \(self.stored)")
print("stored will be set to \(newValue)")
}
// 프로퍼티가 저장되고 난 다음 실행시킬 동작을 지정하는 곳
// old value 를 통해 저장되기 전 값에 접근 가능
didSet {
print("didSet was called")
print("stored is now equal to \(self.stored)")
print("stored was previously set to \(oldValue)")
}
}
}
struct ComputedProperties {
var computed: String {
return "computed"
}
private var _stored = "stored"
var shortHand: String {
get {
return _stored
}
set {
_stored = newValue
}
}
}
class CircleProperty {
var radius: Double = 0
var area: Double { // Property?
get {
return radius * radius * Double.pi
}
}
}
class CircleMethod {
var radius: Double = 0
func area() -> Double { // or argumentless method?
return radius * radius * Double.pi
}
}
computed property는 값에 접근하려고 할때 많이 사용하고 메소드는 복잡한 계산을 하거나 현재 상태를 바꾸는 경우에 사용한다.