Swift 2.0 popLast()
适用于数组,如下所示:
var arr = [1,2,3]
let i = arr.popLast()
现在arr
是[1,2]而i
是3(包含在可选中)。
但是虽然还有一个popFirst()
,但它没有编译。我很确定它已经习惯了,但现在还没有:
var arr = [1,2,3]
let i = arr.popFirst() // compile error
这里发生了什么?这种方法何时实际可用?
答案 0 :(得分:18)
奇怪的是,popFirst
仅适用于切片等数组导数。因此,例如,这编译:
let arr = [1,2,3]
var arrslice = arr[arr.indices]
let i = arrslice.popFirst()
现在arrslice
是[2,3](作为切片),i
是1(包含在可选中),arr
未受影响。
这就是如何使用它。
但我不明白为什么对popFirst()
的使用施加了这种奇怪的限制。我看到如何施加(在Swift标题中),但我不明白为什么。
编辑再考虑一下,我猜它与效率有关。当你在一个切片上调用popFirst()
时,你会得到一个稀疏数组:现在没有索引0.所以我们不必将所有元素向下滑动一个插槽;相反,我们只是递增了startIndex
。