在Swift中定义数组

时间:2016-08-17 03:31:19

标签: arrays swift

刚刚得到一个快速的数组问题它可能有点愚蠢,但我是一种新的编码,这里的代码有什么区别:

var items:[String]

所以根据我的理解,你在定义变量' items'作为一个空数组字符串。 items的类型为array

var items: [String] = ()

在这里,您将项目定义为空数组,但不应将其写为:

 var items = [String]() 

或者这本质上是相同的代码

2 个答案:

答案 0 :(得分:4)

此:

var items:[String]

表示您声明名为items的变量,该变量将是String个实例的数组。但是,您没有将该变量初始化为任何初始值。编译器在使用值初始化之前不允许您使用此变量,因为您没有声明类型([String])是可选的([String]?),因此必须被初始化并包含您的代码使用的非零值。

此:

var items: [String] = ()

表示您声明一个名为items的变量应该是String个实例的数组,但是您尝试使用值()对其进行初始化,这在Swift中是同义词与Void。编译器不允许这样做。类似的有效表示法是:var items: [String] = []使用未指定类型的空数组([])来初始化值。由于您将items声明为String值的数组,因此编译器可以推断出无类型的空数组([])应该是String值的空数组({ {1}})并允许它。

此:

[String]

声明一个名为var items = [String]() 的变量,您没有明确指定其类型,并立即使用空items值数组初始化它。由此,编译器可以推断出变量的类型为String,因此您无需声明它。

答案 1 :(得分:0)

var items = [String]()称为初始化语法。这意味着您要为将来存储字符串数组分配内存。

但是,通过执行var items:[String],您没有提供初始值设定项。这将导致错误 - 从概念上考虑您指向一个尚未为其分配空间的内存区域。其他变量无处可去!

另一方面,var items: [String] = ()似乎不是任何标准语法。看起来您正在将一串字符串转换为void。这不应该编译。