为什么我们在 Swift 变量声明中使用关键字 "get"?
Why do we use the keyword "get" in Swift variables declaration?
这听起来可能很愚蠢,但我不明白为什么程序员在 Swift 中声明变量如下:
class Person: NSObject {
var name: String { get }
}
为什么使用关键字“get”?为什么错过了“设置”?我以为我们是这样使用它们的:
class Person: NSObject {
var name: String {
get {
// getter
}
set {
// setter
}
}
}
这可能是一个垃圾问题,但我对 { get }
的理论定义很感兴趣
第一个代码示例严格来说没有意义。你不要在 class.. 中声明这样的变量(你在这样的协议中这样做。)
第二个是计算 属性 的示例,但缺少 getter 和 setter 实现。 (这似乎至少是暗示的,所以我不会反对代码示例的有效性。)
像var name: String { get }
这样的句子通常用在协议中,而不是在classes中。在协议中,这意味着实现必须有一个 String 类型的变量,它至少应该是只读的(因此 get
)。如果大括号位是 { get set }
变量就会被读写。
实际上根据 Earl Gray 的回答,var name: String { get }
不会在 class.
中编译
这听起来可能很愚蠢,但我不明白为什么程序员在 Swift 中声明变量如下:
class Person: NSObject {
var name: String { get }
}
为什么使用关键字“get”?为什么错过了“设置”?我以为我们是这样使用它们的:
class Person: NSObject {
var name: String {
get {
// getter
}
set {
// setter
}
}
}
这可能是一个垃圾问题,但我对 { get }
的理论定义很感兴趣第一个代码示例严格来说没有意义。你不要在 class.. 中声明这样的变量(你在这样的协议中这样做。)
第二个是计算 属性 的示例,但缺少 getter 和 setter 实现。 (这似乎至少是暗示的,所以我不会反对代码示例的有效性。)
像var name: String { get }
这样的句子通常用在协议中,而不是在classes中。在协议中,这意味着实现必须有一个 String 类型的变量,它至少应该是只读的(因此 get
)。如果大括号位是 { get set }
变量就会被读写。
实际上根据 Earl Gray 的回答,var name: String { get }
不会在 class.