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