八.计算属性
1.计算属性相当于Java中通过getter、setter合成的属性。枚举、结构体和类都可以定义计算属性。----包括实例计算属性和类型计算属性。
2.计算属性的底层并不一定有对应的存储变量----因为计算属性的本质就是getter、setter方法的组合。至于getter、setter方法到底执行哪些代码,什么时候执行,则完全由程序决定。
3.定义存储属性的语法格式如下:
[修饰符] var计算属性:属性类型{
get{
getter方法执行体,该方法必须要有返回值
}
[set(形参名)
{
setter方法执行体,该方法一定不能有返回值
}]
}
4.属性类型可以是Swift语言允许的任何数据类型,包括值类型和引用类型。
5. get部分可定义一段执行性代码,这段代码最终将返回该计算属性的值。至于get中执行什么样的操作,Swift并不关心,只要返回一个类型匹配的值即可。----类似于Java中的getter方法
6. set中定义一段执行性代码,这段代码用于对计算属性赋值。但是在set方法是否真的进行了赋值Swift并不关心。
7. Swift允许定义只读属性,因此可以省略set部分。
8.因为计算属性的setter方法总是只有一个形参,且该形参的类型与该计算属性的类型相同。因此Swift允许在定义计算属性时省略set部分的形参。如果程序省略了计算属性的set部分的形参名,Swift将为该形参提供一个隐式的形参名:newValue。因此,程序中可以在set关键字后面直接跟花括号,里面的执行体用到形参的地方全都用newValue代替。
9.只读的计算属性:只有get部分,没有set部分的计算属性被称为只读的计算属性。只读的计算属性只能返回一个值。
10.由于只读的计算属性没有set部分,因此只读的计算属性的定义部分甚至可以省略get关键字和花括号。举个栗子:
class User
{
var first:String = "";
var last:String = ""
var fullName : String{
return first + "-" + last
}
init(first:String, last:String)
{
self.first = first
self.last = last
}
}
网友评论