首页 文章

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

提问于
浏览
1

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

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

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

func popFirst()移除并返回集合的第一个元素 . func removeFirst()移除并返回集合的第一个元素 .

他们的文件描述完全相同 . 实际上我尝试了很多(在操场上整整一页)来看看这些方法之间是否存在一些显着差异 . 答案是根据我的测试, some methodssome methods are totally the same 之间存在一些 very small 差异 .

StringArray 上使用时,某些方法 popFirst()popLast()dropLast()dropFirst() 不同 . 但根据我的测试,它们都可以被 removeFirst() 和_1187888取代(尽管存在一些微小的差异) .

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

1 回答

  • 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
    

相关问题