//1. Lazy Stored Properties
class DataImporter {
var fileName = "data.txt"
}
class DataManager {
lazy var importer = DataImporter()
var data = [String]()
}
var m = DataManager()
m.data.append("data 1 ")
m.data.append("data 2 ")
//m.importer has not yet been created.
print( m.importer.fileName )
//m.importer has been created now.
//2. Computed Properties
struct Point {
var x = 0.0, y = 0.0
}
struct Size {
var width = 0.0, height = 0.0
}
struct Rect {
var origin = Point()
var size = Size()
var center : Point {
get {
let tmpx = origin.x + size.width/2
let tmpy = origin.y + size.height/2
return Point(x:tmpx,y:tmpy)
}
// set {
// origin.x = newValue.x - size.width/2
// origin.y = newValue.y - size.height/2
// }
// renaming newCenter as newValue
set ( newCenter ){
origin.x = newCenter.x - size.width/2
origin.y = newCenter.y - size.height/2
}
}
}
var r = Rect(origin:Point(x:10,y:10), size:Size(width:20,height:20))
print( r.center)
// 3. setter, getter
class Test {
var _power : Double = 0.0
var power : Double {
get {
return _power
}
set (newValue){
_power = newValue
}
}
}
/* 4.Property Objservers
willSet is called just before the value is stored.
didSet is called immediately after the new value is stored.”
*/
class Sample {
var force : Int = 0 {
willSet(newV){
print("\(force) -> \(newV)")
}
didSet {
print("\(oldValue) -> \(force)")
}
}
}
var s = Sample()
print(s.force)
s.force = 12
print(s.force)
2017년 2월 17일 금요일
Swift Lazy, Computed, Observers Properties
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기