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