我对在哪里使用此声明有疑问:
var name: String = 'Name'
和
var name: String = {return 'Name'}
我在工作的某些代码中看到了这一点,我想知道这些语句之间的区别
答案 0 :(得分:2)
TLDR:一个是函数,一个是String
var name: String = "Name"
是“常规”变量分配。您创建一个标识符为var
的类型为name
的{{1}},并为其分配值“ Name”。
var name: String = {return "Name"}
无法编译。您正在创建类型为String的var
,但不是为它分配一个字符串,而是为其分配了一个函数。花括号指示功能。
所以...
var name = "Name"
print(name)
name
。Name
]的值而
var name = {return "Name"}
print(name)
name
的变量{return "Name"}
(Function)
] 但是
var name = {return "Name"}
print(name())
name
的变量{return "Name"}
Name
] 因此
var sum = {return 1+2}
print(sum())
sum
的变量{return 1+2}
最后一个注意事项-您使用了单引号('
),但应声明带双引号("
)的字符串。
答案 1 :(得分:0)
第一个是存储属性。 第二个是计算属性。
这里的区别是,每次访问计算属性的{}中的代码都会执行。它没有内存可以单独存储值。
例如,如果您的viewController具有属性:
var label: UILabel { return UILabel() }
// Then you use it as
label.text = "hello" // label 1
label.textColor = .red // another label, label 2
// the label 1 and label 2 are different, it's initialized each time use access it.