《从零开始学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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老关【关东升】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值