【发布时间】: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 可以,感谢您抽出宝贵时间回答问题。