这可能听起来很愚蠢,但我无法弄清楚为什么程序员在Swift中声明变量如下:
class Person: NSObject {
var name: String { get }
}
为什么关键字" get"用过的?为什么"设置"错过了什么? Aren他们应该如下使用:
class Person: NSObject {
var name: String {
get {
// getter
}
set {
// setter
}
}
}
我想这是一个垃圾邮件问题,但我对 {get}
的理论定义感兴趣答案 0 :(得分:3)
var name: String { get }
之类的句子通常用于非类中的协议。在协议中,它意味着实现必须具有String类型的变量,该变量至少应该是只读的(因此get
)。如果大括号位为{ get set }
,则该变量将被读写。
实际上根据Earl Gray的回答,var name: String { get }
不会在课堂内编译。
答案 1 :(得分:2)
严格来说,第一个代码示例没有意义。你没有在类中声明这样的变量..(你可以在这样的协议中这样做。)
第二个是计算属性的示例,但缺少getter和setter实现。 (它似乎暗示至少所以我不会反对代码示例的有效性。)