Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们要使用关键字“quot;获得;在Swift变量声明中?_Swift_Variables_Getter - Fatal编程技术网

为什么我们要使用关键字“quot;获得;在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 {

这听起来可能很愚蠢,但我不明白程序员为什么用Swift声明变量,如下所示:

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时,助理编辑器产生了这个变量,这让我感到困惑。现在我明白了。非常感谢。