为什么Swift需要这些类似的功能呢?这有点多余吗?

时间:2016-09-23 03:14:58

标签: swift

Swift中有一些类似的方法。它们看起来很相似,实际上它们的功能也相似。他们是:

popFirst()popLast()dropFirst()dropLast()removeFirst()removeLast()

特别是popFirst()removeFirst(),根据 Apple doc

  

func popFirst()

     

删除并返回集合的第一个元素。

     

func removeFirst()

     

删除并返回集合的第一个元素。

他们的文件描述完全相同。实际上我尝试了很多(在操场上整整一页)来看看这些方法之间是否存在一些显着差异。答案是 某些方法之间存在非常小差异,而某些方法完全相同根据我的考试。

某些方法,popFirst()popLast()dropLast()dropFirst()字符串数组。但根据我的测试,它们都可以被removeFirst()removeLast()取代(尽管存在一些微小的差异)。

所以我的问题是为什么Swift必须保留这些类似的方法。这有点多余吗?

1 个答案:

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