《从零开始学Swift》学习笔记(Day 32)——计算属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《从零开始学Swift》学习笔记(Day 32)——计算属性相关的知识,希望对你有一定的参考价值。

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

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

 

计算属性概念:

计算属性提供了一个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"


欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 技术分享

更多精品iosCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

 


本文出自 “关东升-iOS技术顾问” 博客,请务必保留此出处http://tonyguan.blog.51cto.com/701759/1746597

以上是关于《从零开始学Swift》学习笔记(Day 32)——计算属性的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:

《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合

《从零开始学Swift》学习笔记(Day 16)——字典集合

《从零开始学Swift》学习笔记(Day 31)——存储属性

《从零开始学Swift》学习笔记(Day 29)——访问级别

《从零开始学Swift》学习笔记(Day 26)——可选链