你如何在数组上使用Swift 2.0 popFirst()?

时间:2015-09-30 15:26:25

标签: arrays swift2

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

这里发生了什么?这种方法何时实际可用?

1 个答案:

答案 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