加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 07:13:19 所属栏目:百科 来源:网络整理
导读:原创文章,欢迎转载。转载请注明:关东升的博客 计算属性 本身不存储数据,而是从其他存储属性中计算得到数据。 计算属性概念: 计算属性提供了一个 getter (取值访问器)来获取值,以及一个可选的 setter (设置访问器)来间接设置其他属性或变量的值。计

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

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

计算属性概念:

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

面向对象类型类型名{
存储属性
......
var计算属性名:属性数据类型{
get{
return计算后属性值
}
set(新属性值){
......
}
}
}


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

我们先看一个示例:

importFoundation

classEmployee{
varno:Int=0
varfirstName:String="Tony"//存储属性
varlastName:String="Guan"//存储属性
varjob:String?
varsalary:Double=0
lazyvardept:Department=Department()

varfullName:String{//计算属性
get{
returnfirstName+"."+lastName//返回拼接的结果
}
set(newFullName){//存储传递进来的参数值
varname=newFullName.componentsSeparatedByString(".")
firstName=name[0]
lastName=name[1]
}
}
}

structDepartment{
letno:Int=0
varname:String=""
}

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

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


只读计算属性:

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

classEmployee{
varno:Int=0
varfirstName:String="Tony"
varlastName:String="Guan"
varjob:String?
varsalary:Double=0
lazyvardept:Department=Department()

varfullName:String{//简洁的setter访问器
returnfirstName+"."+lastName
}
}

structDepartment{
letno:Int=0
varname:String=""
}

varemp=Employee()
print(emp.fullName)


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

emp.fullName="Tom.Guan"


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

wKiom1bWS1uCtSsHAAAs2MBEZnc509.png

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读