困惑于Swift数组声明

以下是否有区别?

  1. var array1_OfStrings = [String]()

  2. var array2_OfStrings: [String] = []

  3. var array3_OfStrings: [String]

在Playgroundtesting显示1和2是相同的,但是3的行为不同。 有人能解释我的区别吗? 还有什么将是首选的方式来声明一个空的数组String

前两个有同样的效果。

  1. 声明一个variablesarray1_OfStrings ,让它select自己的types。 当它看到[String]() ,它巧妙地知道它是string的types数组。

  2. 你设置variablesarray2_OfStrings为string的数组types,然后你说它是空的[]

  3. 这是不同的,因为你只是告诉你想array3_OfStrings是stringtypes的数组,但没有给它一个初始值。

我认为第一个build议是因为Swift编程语言更频繁地使用它。

虽然我可能会迟到,但有一点需要说明的。

首先将array1_OfStrings设置为string数组

另一个选项告诉array1_OfStrings是string数组,然后将其设置为空。

虽然这可能是一个非常小的差异,您将在编译时注意到它。 对于第一个选项,编译器会自动尝试找出array1_OfStrings的types。 第二个选项不会那样做,你会让编译器知道这实际上是string数组并且完成了处理。

为什么这很重要? 看看下面的链接: https : //thatthinginswift.com/debug-long-compile-times-swift/

正如你所看到的,如果你没有声明可能会影响构build性能的variables的types。