对Swift数组声明感到困惑

时间:2015-11-12 10:11:22

标签: arrays swift

以下是否有任何区别?

  1. var array1_OfStrings = [String]()

  2. var array2_OfStrings: [String] = []

  3. var array3_OfStrings: [String]
  4. Playground中的测试显示1和2相同,但3表现不同。 有人可以解释我的区别吗?还有什么是声明String空数组的首选方法?

2 个答案:

答案 0 :(得分:4)

前两个具有相同的效果。

  1. 声明变量array1_OfStrings,让它选择类型本身。当它看到[String]()时,它巧妙地知道这是字符串的类型数组。

  2. 您将变量array2_OfStrings设置为字符串的类型数组,然后通过[]

  3. 表示它是空的
  4. 这是不同,因为您只是告诉您希望array3_OfStrings是字符串的类型数组,但不会给它一个初始值。

  5. 我认为建议使用第一个,因为The Swift Programming Language会更频繁地使用它。

答案 1 :(得分:3)

虽然我可能会迟到,但有一件事需要说。

第一个选项将array1_OfStrings设置为字符串数组

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

虽然这可能是一个非常小的差异,但在编译时你会注意到它。对于第一个选项,编译器将自动尝试找出array1_OfStrings的类型。第二个选项不会这样做,你会让编译器知道这实际上是字符串数组并完成了交易。

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

正如您所看到的,如果您没有声明可能影响构建性能的变量类型很多。