刚刚得到一个快速的数组问题它可能有点愚蠢,但我是一种新的编码,这里的代码有什么区别:
var items:[String]
所以根据我的理解,你在定义变量' items'作为一个空数组字符串。 items的类型为array
var items: [String] = ()
在这里,您将项目定义为空数组,但不应将其写为:
var items = [String]()
或者这本质上是相同的代码
答案 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。这不应该编译。