美文网首页PonySwift《从零开始学Swift》学习笔记连载小说
Swift 2.0学习笔记(Day 32)——计算属性

Swift 2.0学习笔记(Day 32)——计算属性

作者: tony关东升 | 来源:发表于2015-11-24 11:02 被阅读98次

    原创文章,欢迎转载。转载请注明:关东升的博客

    计算属性本身不存储数据,而是从其他存储属性中计算得到数据。

    计算属性概念:

    计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值。计算属性的语法格式如下:

    面向对象类型 类型名 {

    存储属性

    ......

    var 计算属性名: 属性数据类型 {

    get {

    return 计算后属性值

    }

    set (新属性值) {

    ......

    }

    }

    }

    定义计算属性比较麻烦,要注意后面的几个大括号的对齐关系。

    我们先看一个示例:

    import Foundation

    class Employee {

    var no: Int = 0

    var firstName: String = "Tony" //存储属性

    var lastName: String = "Guan" //存储属性

    var job: String?

    var salary: Double = 0

    lazy var dept: Department = Department()

    var fullName: String { //计算属性

    get {

    return firstName + "." + lastName //返回拼接的结果

    }

    set (newFullName) { //存储传递进来的参数值

    var name = newFullName.componentsSeparatedByString(".")

    firstName = name[0]

    lastName = name[1]

    }

    }

    }

    struct Department {

    let no: Int = 0

    var name: String = ""

    }

    var emp = Employee()

    print(emp.fullName) //取出属性值

    emp.fullName = "Tom.Guan" //给属性赋值

    print(emp.fullName)

    只读计算属性:

    计算属性可以只有getter访问器,没有setter访问器,这就是只读计算属性。指定计算属性不仅不用写setter访问器,而且get{}代码也可以省略。与上一节相比,代码将大大减少。修改上一节示例为只读计算属性,代码如下:

    class Employee {

    var no: Int = 0

    var firstName: String = "Tony"

    var lastName: String = "Guan"

    var job: String?

    var salary: Double = 0

    lazy var dept: Department = Department()

    var fullName: String { //简洁的setter访问器

    return firstName + "." + lastName

    }

    }

    struct Department {

    let no: Int = 0

    var name: String = ""

    }

    var emp = Employee()

    print(emp.fullName)

    只读计算属性不能够赋值,下列语句是错误的。

    emp.fullName = "Tom.Guan"

    相关文章

      网友评论

        本文标题:Swift 2.0学习笔记(Day 32)——计算属性

        本文链接:https://www.haomeiwen.com/subject/qsmrhttx.html