这里发生了什么?
var foo: [UInt8] = [1,2,3,4]
var bar: [UInt8] = foo[1...2] // 'Range<Pos>' is not convertible to 'Int'
Run Code Online (Sandbox Code Playgroud)
但这编译很好:
var foo: [UInt8] = [1,2,3,4]
var bar = foo[1...2]
Run Code Online (Sandbox Code Playgroud)
文档仅在替换方面明确提及:
shoppingList[4...6] = ["Bananas", "Apples"]
Run Code Online (Sandbox Code Playgroud)
那究竟什么Array[Range]回归呢?在两个数组索引之间获取对象的最简单方法是什么?
jtb*_*des 14
struct Array宣布subscript (subRange: Range<Int>) -> Slice<T>.因此,bar类型应该是Slice<UInt8>,而不是[UInt8].Slice符合相同的协议Array,因此其余代码不需要更改,您可以选择不留下类型注释.(或者,Array(foo[1...2])如果你真的想,你可以用它来转换成数组.)
| 归档时间: |
|
| 查看次数: |
7087 次 |
| 最近记录: |