详解Swift编程中的方法与属性的概念

2020-01-08 22:33:09丽君

Swift 集成了这些概念成一个“存储的属性”声明。而不必有一个相应的实例变量和备份值'存储属性“,包含通过变量名一个位置定义的有关变量属性所有信息集成,数据类型和存储器管理功能。

计算属性
而不是存储计算的属性值提供了一个getter和一个可选的 setter 间接来检索和设置其他属性和值。

复制代码
class sample {var no1 =0.0, no2 =0.0var length =300.0, breadth =150.0var middle:(Double,Double){get{return(length /2, breadth /2)}set(axis){
         no1 = axis.0-(length /2)
         no2 = axis.1-(breadth /2)}}}var result = sample()
println(result.middle)
result.middle =(0.0,10.0)

 

println(result.no1)               
println(result.no2)


当我们使用 playground 运行上面的程序,我们得到以下结果

 


(150.0, 75.0)
-150.0
-65.0

当计算的属性留下了新的值为未定义默认值将针对特定的变量来设置。

计算属性为只读属性
在计算属性只读属性被定义为 getter,但不是 setter。它总是用来返回一个值。变量通过使用 '.' 语法访问,但不能被设置为其他值。

复制代码
class film {var head =""var duration =0.0var metaInfo:[String:String]{return["head":self.head,"duration":"(self.duration)"]}}var movie = film()
movie.head ="Swift Properties"
movie.duration =3.09

 

println(movie.metaInfo["head"]!)      
println(movie.metaInfo["duration"]!)


当我们使用 playground 运行上面的程序,我们得到以下结果

 


Swift Properties
3.09

计算属性属性观察者
在Swift 中使用属性观察者来观察和设置属性值响应。 当每一次属性值设置属性观察者都被调用。 除了懒存储属性,我们可以通过添加属性观察者“继承”属性“覆盖”方法。

在存放值之前 - willset

存储新的值之后 - didset