为什么我们要使用关键字“quot;获得;在Swift变量声明中?
这听起来可能很愚蠢,但我不明白程序员为什么用Swift声明变量,如下所示:为什么我们要使用关键字“quot;获得;在Swift变量声明中?,swift,variables,getter,Swift,Variables,Getter,这听起来可能很愚蠢,但我不明白程序员为什么用Swift声明变量,如下所示: class Person: NSObject { var name: String { get } } 为什么要使用关键字“get”?为什么错过了“设置”?我想我们是这样使用它们的: class Person: NSObject { var name: String { get { // getter } set {
class Person: NSObject {
var name: String { get }
}
为什么要使用关键字“get”?为什么错过了“设置”?我想我们是这样使用它们的:
class Person: NSObject {
var name: String {
get {
// getter
}
set {
// setter
}
}
}
这可能是一个垃圾邮件问题,但我对{get}的理论定义感兴趣严格来说,第一个代码示例没有意义。在类中不能声明这样的变量。。(您可以在这样的协议中执行此操作。)
第二个是computed属性的示例,但缺少getter和setter实现。(这似乎是暗示,至少我不会反对代码示例的有效性。)像
var name:String{get}
这样的句子通常在协议中使用,而不是在类中使用。在协议中,这意味着实现必须有一个字符串类型的变量,该变量至少应该是只读的(因此get
)。如果花括号位是{get set}
的话,变量就会被读写
实际上,根据Earl Grey的回答,
var name:String{get}
不会在类内编译。谢谢,我知道如何使用set、get、willSet、didSet,但我对这段特殊的代码很好奇:{get}。为什么它实际上不返回任何东西?您应该在其中添加一个return语句。获取{返回名称}。我猜这个语句“var name:String{get}”只是显示一个简短的代码段。语法var foo:String{get{return“bar}}
(可以缩写为var foo:String{return“bar}
)声明了一个没有setter的计算属性。您的第二个示例是一个同时具有getter和setter的计算属性。太好了,谢谢!当我将Obj-C类的接口转换为Swift时,助理编辑器产生了这个变量,这让我感到困惑。现在我明白了。非常感谢。