两种类型的变量声明之间的区别?

时间:2020-06-23 06:01:40

标签: swift

我对在哪里使用此声明有疑问: var name: String = 'Name'var name: String = {return 'Name'}

我在工作的某些代码中看到了这一点,我想知道这些语句之间的区别

2 个答案:

答案 0 :(得分:2)

TLDR:一个是函数,一个是String

var name: String = "Name"是“常规”变量分配。您创建一个标识符为var的类型为name的{​​{1}},并为其分配值“ Name”。

var name: String = {return "Name"}无法编译。您正在创建类型为String的var,但不是为它分配一个字符串,而是为其分配了一个函数。花括号指示功能。

所以...

var name = "Name"
print(name)
  1. 使用值名称创建变量name
  2. 打印变量名[期望的输出Name]的值

var name = {return "Name"}
print(name)
  1. 创建值为name的变量{return "Name"}
  2. 将其打印到控制台[预期输出(Function)]

但是

var name = {return "Name"}
print(name())
  1. 创建值为name的变量{return "Name"}
  2. 评估该功能并打印结果[预期输出Name]

因此

var sum = {return 1+2}
print(sum())
  1. 创建值为sum的变量{return 1+2}
  2. 评估该功能并打印结果[预期输出3]

最后一个注意事项-您使用了单引号('),但应声明带双引号(")的字符串。

答案 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.