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
.