【问题标题】:Confused about Swift Array Declarations对 Swift 数组声明感到困惑
【发布时间】:2016-02-13 15:07:28
【问题描述】:

以下有什么区别吗?

  1. var array1_OfStrings = [String]()

  2. var array2_OfStrings: [String] = []

  3. var array3_OfStrings: [String]

在 Playground 中的测试表明 1 和 2 相同,但 3 的行为不同。 有人可以解释一下区别吗?还有什么是声明String的空数组的首选方式?

【问题讨论】:

  • @ogres 错了,#3 不是可选的,因此它不能为 nil

标签: arrays swift


【解决方案1】:

前两个效果相同。

  1. 声明一个变量array1_OfStrings,让它自己选择类型。当它看到[String]() 时,它就智能地知道这是字符串类型数组。

  2. 你将变量array2_OfStrings设置为字符串类型数组,然后[]说它是空的

  3. 这是不同,因为您只是告诉您希望 array3_OfStrings 成为字符串类型数组,但没有给它一个初始值。

我认为推荐第一个,因为The Swift Programming Language 经常使用它。

【讨论】:

    【解决方案2】:

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

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

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

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

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

    如您所见,如果您不声明可能会影响构建性能的变量类型很多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多