我试图浏览整个互联网,找出在Swift中封装数据的最佳做法。我只找到了一些关于实例变量的get和set方法的信息。他们过去的工作方式与C#的设置非常相似,但是现在它们作为计算属性工作,并且不能在他们的setter中设置它们并且不能在它们的getter中获取它们。问题是:人们是否仍然为swift中的每个属性创建getter和setter?像:
private var age: Int = 0
public func getAge() -> Int {
return age
}
public func setAge(newAge: Int) {
self.age = newAge
}
如果没有,那么什么被认为是最佳做法? 谢谢。
答案 0 :(得分:3)
当内部比这里显示的更复杂时,我使用这种类型的语法和计算变量来公开getter和setter:
internal var _age: Int = 0
var age: Int {
get {
return _age
}
set {
_age = newValue
}
}
大量的语法糖可以轻松隐藏某些表达式的复杂性。
但是大多数时候我很高兴只暴露普通变量并完成它:
var age: Int = 0
这样做的好处是,当你想在getter和setter中做更多工作时,两种方式都可以轻松交换。
答案 1 :(得分:0)
我认为您不需要创建getX / setX方法,因为您始终可以从存储更改为计算属性,而无需更改客户端的源代码。就像你可以改变你的getAge&的身体一样setAge方法,所以我没有看到不让客户使用age
在swift中获得什么。
答案 2 :(得分:0)
如果你想访问属性(Age)本身,你总是可以直接获取/设置它。
let theGirlsAge = Age; // Get
Age = theBoysAge; // Set
Getters和Setter用于定义属性和其他属性之间的关系。
public func getAge() -> Int {
return theBoysAge
}
public func setAge(newAge: Int) {
theGirlsAge = newAge
}