[Int] 和 Array<Int> 有什么区别?

3
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
@user2864740好的,感谢您抽出时间来回答问题。 - Kyle G
1个回答

8

来自《Swift编程语言:集合类型》

数组类型简写语法

一个 Swift 数组的类型可以完整地写作 Array<SomeType>,其中 SomeType 是该数组可存储的值的类型。你也可以使用简写形式 [SomeType] 来表示数组的类型。虽然这两种形式在功能上是相同的,但当提到数组的类型时,首选简写形式,并在本指南中广泛使用。

也就是说,两种注释都是正确的,而且都代表着相同的类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接