Arrays 如何在数组上使用Swift 2.0 popFirst()?
Swift 2.0Arrays 如何在数组上使用Swift 2.0 popFirst()?,arrays,swift2,Arrays,Swift2,Swift 2.0popLast()在数组上工作,如下所示: 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 这是怎么回事?这种方法什么时候实际可用?奇怪的是,popFirst仅适用于切片等数组派生。因
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
这是怎么回事?这种方法什么时候实际可用?奇怪的是,
popFirst
仅适用于切片等数组派生。因此,例如,这编译:
let arr = [1,2,3]
var arrslice = arr[arr.indices]
let i = arrslice.popFirst()
现在arrsicle
是[2,3](作为一个片),i
是1(包装在一个可选文件中),并且arr
是未触及的
这就是如何使用它
但是我不明白为什么要对popFirst()
的使用施加这种奇怪的限制。我看到它是如何强加的(在Swift标题中),但我不明白为什么
编辑再想一想,我猜这与效率有关。在切片上调用
popFirst()
时,将得到一个稀疏数组:现在没有索引0。因此,我们不必将所有元素滑下一个插槽;相反,我们只是简单地增加了startIndex
感谢您解释这个谜团!我想,您只需要使用removeFirst,但您必须用removeFirst检查数组是否为空。