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)