【问题标题】:What's the difference between [Int] & Array<Int>?[Int] 和 Array<Int> 有什么区别?
【发布时间】:2015-11-04 04:05:43
【问题描述】:
let numberList = Array(1...10) // type == Array<Int>
let numberList2 = [1,2,3,4,5,6,7,8,9,10] // type == [Int]

上面的代码将注释类型分配给每个常量。我不记得在文档中对此进行了解释。

是否只是一种使用构造函数,另一种使用文字表示法的情况,结果产生了不同的类型?

如果是这样,那么在声明它们之后,使用其中一个有什么不同吗? (即,使用构造函数允许您使用类初始化器等,但在初始化后,一个比另一个提供任何好处吗?)

一旦初始化,它们似乎都使用相同的 Array API。所以我假设这都是纯粹的语法?

最后,有没有办法通过文字符号来模仿构造函数的功能?例如

let arr = [](1...10) // doesn't create [1,2,3,4,5,6,7,8,9,10]

有些不相关

谁能告诉我为什么下面的代码会产生这样的结果?:

let numberList2 = [1...10] // == ["1..<11"]

我认为上面是一个包含范围的数组。 Playground 中显示的类型报告该类型为:[Range],如预期的那样。但是,为什么该值似乎报告为一个数组,其中包含一个字符串,该字符串表示最大为 11 的半开范围,而不是最大为 10 的封闭范围?

为脱节的帖子道歉。提前感谢您的帮助。

【问题讨论】:

  • 针对每个明显不同的问题提出不同的问题。这里有三个;我已经回答了一个。
  • @user2864740 可以,感谢您抽出宝贵时间回答问题。

标签: arrays swift types


【解决方案1】:

来自The Swift Programming Language: Collection Types

数组类型简写语法

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

也就是说,两个cmets都是正确的——都代表相同的类型。

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2017-02-23
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多