Swift3.0学习笔记-Properties

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID254


        Swift属性即成员变量跟其它语言类似, 包含变量、常量等。 


     Swift提供了lazy关键字, 即实例化结构体时不实例化成员变量, 当第一次调用lazy属性时才真正的实例化。使用lazy属性的场景: 1、 实例化结构体时,不知道某个属性该赋什么值(Java里一般赋初值0或null); 2、该属性需要经过比较耗时的计算后得出(就是说某个属性不常用且初始化会比较耗时,在用的时候再去实例化)。

     PS:在Java里没有跟lazy功能类似的关键字, 也没发现什么问题。

class DataImporter {
    var filename = "data.txt"
}

class DataManager {
    lazy var importer = DataImporter()
    var data = [String]()
}
let manager = DataManager()  //importer变量并没有实例化
print("\(manager.importer)") //第一次调用时实例化lazy变量


      在Java里提供了getter和setter方法, Swift也实现了get和set语法。 区别是Swift的get、set方法是在声明参数时实现。

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 centerX = origin.x + (size.width/2)
            let centerY = origin.y + (size.height/2)
            return Point(x: centerX, y: centerY)
        }
        set(newCenter) {
            origin.x = newCenter.x
            origin.y = newCenter.y
        }
    }
}
var square = Rect(origin: Point(x:0.0, y:0.0),
                  size: Size(width: 10.0, height: 10.0))
let initialSquareCenter = square.center
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值