Swift中有一些类似的方法。它们看起来很相似,实际上它们的功能也相似。他们是:
popFirst()
,popLast()
,dropFirst()
,dropLast()
,removeFirst()
,removeLast()
特别是popFirst()
和removeFirst()
,根据 Apple doc :
func popFirst()
删除并返回集合的第一个元素。
func removeFirst()
删除并返回集合的第一个元素。
他们的文件描述完全相同。实际上我尝试了很多(在操场上整整一页)来看看这些方法之间是否存在一些显着差异。答案是 某些方法之间存在非常小差异,而某些方法完全相同根据我的考试。
某些方法,popFirst()
,popLast()
和dropLast()
,dropFirst()
在字符串和数组。但根据我的测试,它们都可以被removeFirst()
和removeLast()
取代(尽管存在一些微小的差异)。
所以我的问题是为什么Swift必须保留这些类似的方法。这有点多余吗?
答案 0 :(得分:1)
尽管Apple并不容易找到,但确实提到pop
返回nil
表示空集合,remove
在没有任何内容删除时抛出错误。
但是,您应该能够从这些功能的签名中说出相同内容:
popFirst
返回一个可选项,这意味着您甚至可以从空集合中弹出第一个元素removeFirst
不是可选的。这样的签名意味着在无法返回值的状态下调用此方法是错误的。这可以通过游乐场轻松确认:
var test1 = Set<String>(["a", "b"])
let x1 = test1.popFirst()
let y1 = test1.popFirst()
let z1 = test1.popFirst() // returns nil
var test2 = Set<String>(["a", "b"])
let x2 = test2.removeFirst()
let y2 = test2.removeFirst()
let z2 = test2.removeFirst() // Throws an error