两种在swift中定义字符串变量的方法

时间:2015-11-15 08:53:26

标签: string swift variables

我只是想知道这两种定义变量的形式是否彼此不同。或者应该在某些特殊情况下使用。

var string1: String  {
    return "ok"
}

var string2: String = "ok"

2 个答案:

答案 0 :(得分:3)

第一种方法是所谓的computed property

  

类,结构和枚举可以定义计算属性,这些属性实际上不存储值。相反,它们提供了一个getter和一个可选的setter来间接检索和设置其他属性和值。

您使用的表单仅为string1提供了一个getter,使其成为只读属性。

第二种方法宣称通常是stored property

  

存储属性是一个常量或变量,存储为特定类或结构的实例的一部分。存储的属性可以是变量存储属性(由var关键字引入)或常量存储属性(由let关键字引入)。

在您的情况下,它是一个读写属性(使用var关键字声明)。

根据具体情况应该使用哪个。但有时它只能引入计算属性(例如,如果你提供扩展名)。

答案 1 :(得分:2)

在第一种情况下,您为drawable-hdpi对象创建get,但您将无法为其设置新值。这种情况与:

相同
string1

在第二种情况下,您创建值为var string1: String { get { return "ok1" } } 的{​​{1}}对象,您可以从对象获取它并为其设置新值