我只是想知道这两种定义变量的形式是否彼此不同。或者应该在某些特殊情况下使用。
var string1: String {
return "ok"
}
var string2: String = "ok"
答案 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}}对象,您可以从对象获取它并为其设置新值