Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Swift需要这些类似的功能?这有点多余吗?_Swift - Fatal编程技术网

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

为什么Swift需要这些类似的功能?这有点多余吗?,swift,Swift,Swift中有一些类似的方法。它们看起来很相似,实际上它们的功能也很相似。它们是: popFirst(),popLast(),dropFirst(),dropLast(),removeFirst(),removeLast() 特别是popFirst()和removeFirst(),根据: func-popFirst() 删除并返回集合的第一个元素 func removeFirst() 删除并返回集合的第一个元素 它们的文档描述完全相同。事实上,我试了很多次(在操场上用了整整一页),看看这些方法之

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

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

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

func-popFirst()

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

func removeFirst()

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

它们的文档描述完全相同。事实上,我试了很多次(在操场上用了整整一页),看看这些方法之间是否有一些显著的差异。答案是,根据我的测试,某些方法之间存在一些非常小的差异,而某些方法完全相同

一些方法,
popFirst()
popLast()
dropLast()
dropFirst()
字符串和数组上使用时是不同的。但是根据我的测试,它们都可以被
removeFirst()
removeLast()
替换(尽管有一些细微的区别)


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

尽管苹果没有让查找变得容易,但它确实提到了
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
var test1=Set([“a”,“b”])
设x1=test1.popFirst()
设y1=test1.popFirst()
设z1=test1.popFirst()//返回nil
var test2=Set([“a”,“b”])
设x2=test2.removeFirst()
设y2=test2.removeFirst()
让z2=test2.removeFirst()//抛出一个错误

您注意到“(尽管存在一些微小的差异)。”这些差异不正是拥有不同方法的关键吗?哪些是“完全相同的?”
popFirst()
removeFirst()
,和
dropFirst()
都有不同的行为(事实上,不同的签名,所以你不需要在操场上测试,因为它们明显不同)。@RobNapier如果这些微小的差异是这些方法存在的价值所在,我会说“好的,很好。”但是……实际上我只是想知道更多关于斯威夫特的基本知识,我认为我的问题不值得否决。毕竟我在问题标题中使用了问号,不像“它是多余的!!”仅供参考,文档在“返回值”部分确实提到了这一点。您也可以在Xcode中使用Command+单击某个方法来查看包含完整文档的“标题”。@ThanhPham您说得对,当我单击文档时,我看到了上面提到的两种效果。谢谢实际上,我通过option+click或command+click多次查看了所有这些方法的文档。我对Swift并不陌生,我只是想知道是否有必要在Swift中保留所有这些方法。现在我知道了,这些微小的差异对你们所有人来说都很重要。无论如何,谢谢你。