在定义各种接口的过程中,我碰到了这样一个问题:我希望定义一个只读的属性,却找不到合适的前缀(原谅我是Class白痴)。翻了一遍Class的相关文档,找到了个曲线救国的办法:计算属性。
所谓的计算属性,就是自己定义一个属性的名字和get/set方法,外人看不见get/set的实现,只能看作是一个普通属性来使用。而如果只实现了get部分,这个属性对外而言就是只读的了。
我的数据结构大致这样:
class myclass {
private var data = ( api : typeX, list: typeY, post: typeZ, channel: typeA) (xxx, list: yyy, post: zzz, .news)
}
我想要把这一组相关数据打包成元组使用,又只想把其中某些暴露出来,并且部分是只读,那么就将其设成private并且在类中实现:
var list : typeY {//只有get,实现只读封装
get {
return data.list
}
}
var ch : typeA {
get {
return data.channel
}
set (channel) {//这次可读写了
data.channel = channel
}
}
现在,外部可以用myclass.list来获取list,或者用myclass.ch来改变channel了