【问题标题】:Difference between [String] and Array<String>[String] 和 Array<String> 之间的区别
【发布时间】:2015-12-12 13:53:21
【问题描述】:

声明ArrayDictionary哪个更好,我都用过:

Array&lt;String&gt;

[String]

对我来说[String] 在编码方面非常快,但实际上两者在编译器和性能方面有何不同,我们应该遵循哪一个?

【问题讨论】:

    标签: arrays swift


    【解决方案1】:

    来自 Swift 上的 iOS 开发者库...

    Swift数组的类型全写为Array,其中 元素是允许数组存储的值的类型。你可以 还将数组的类型以简写形式写为 [Element]。 虽然这两种形式在功能上是相同的,但简写形式 是首选,在本指南中提及 数组的类型。

    https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html

    【讨论】:

      【解决方案2】:

      两者是等价的。

      From Apple

      数组类型简写语法

      Swift 数组的类型全写为 Array,其中 Element 是数组允许存储的值的类型。您还可以将数组的类型以简写形式写为 [Element]。 虽然这两种形式在功能上相同,但首选简写形式,并在本指南中用于指代数组的类型。

      【讨论】:

      • 请原谅与罗伯特·伯恩相同答案的帖子。显然,发帖时分秒必争!
      【解决方案3】:

      我会注意到一个区别是,如果您尝试实例化需要指定模块的对象数组(因为命名冲突),速记形式似乎会窒息。

      let array1 = [MyModule.MyClass]()        // Compile error: Invalid use of '()' to call a value of non-function type '[MyClass.Type]'
      let array2 = Array<MyModule.MyClass>()   // Works as expected.
      

      其他情况,如可选展开或作为参数输入使用速记表示法。我只在 Swift 2.3 中尝试过

      【讨论】:

      • 在 Swift 3 中应该不再是这种情况,因为在命名类型而不调用其构造函数时需要.self。如果仍然存在问题,您应该在 bugs.swift.org 提交错误
      • 谢谢!也许我会收集一个测试项目来尝试一下。
      猜你喜欢
      • 2011-10-03
      • 1970-01-01
      • 2019-11-29
      • 2016-11-09
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2017-08-24
      相关资源
      最近更新 更多