swift 第二课 基础知识-2

 setter 和getter 的使用--> 适合计算使用

struct Point {
    var x = 0.0, y=0.0
}

struct Size {
    var width = 0.0, height = 0.0
    
}

struct Rect {
    var orgin = Point()
    var size = Size()
    
    //    lazy var 变量: 类型 = { 创建变量代码 }()
    //    懒加载的使用方法
    //    lazy var center : Point = {
    //        let x = self.orgin.x + self.size.width/2
    //        let y = self.orgin.y + self.size.height/2
    //
    //        return Point(x: x,y: y)
    //    }()
    
    
    
    mutating  func getCenter()-> (Double,Double){
        let x = self.orgin.x + self.size.width/2
        let y = self.orgin.y + self.size.height/2
       
        return (x,y)
    }
    
    
    var center:Point {
//        setter 和getter 适合 计算属性
        get {
            let x = self.orgin.x + self.size.width/2
            let y = self.orgin.y + self.size.height/2
           
            return Point(x :Double(x) , y : Double(y))
        }
        
        
        set {
            orgin.x = newValue.x - size.width
            orgin.y = newValue.y - size.height
        }
        
    }
}

外部调用 及显示结果

   var rect = Rect(orgin:Point(x:100,y:100),size:Size(width:100,height:100))
        
        print("rect 的数值 是\(rect)")
        print("rect 的 center 是 \(rect.getCenter())")
        
    
        rect.center = Point (x:10.0,y:10.0)
        
        print("rect 的 center 是 \(rect.center)")

结果

rect 的数值 是Rect(orgin: swift_003.Point(x: 100.0, y: 100.0), size: swift_003.Size(width: 100.0, height: 100.0))
rect 的 center 是 (150.0, 150.0)
rect 的 center 是 Point(x: -40.0, y: -40.0)

 

posted @ 2017-02-17 17:04  user_bo  阅读(187)  评论(0编辑  收藏  举报