swift – 后缀(来自:)和dropFirst(_ :)之间有什么区别吗?

swift – 后缀(来自:)和dropFirst(_ :)之间有什么区别吗?,第1张

概述我突然想到在使用 Swift中的子序列时, func后缀(来自:Int)似乎与dropFirst(_ :)完全相同(显然,在长度为“10”的数组中,您只需将输入值从“3”更改为“7”.) 只是重复一遍.所以:当然,对于一个长度为十的数组.我的意思是func后缀(来自:Int)与“2”将与dropFirst(_ :)与“8”相同,例如. 同样upTo / through似乎与dropLast(_ : 我突然想到在使用 Swift中的子序列时,

func后缀(来自:Int)似乎与dropFirst(_ :)完全相同(显然,在长度为“10”的数组中,您只需将输入值从“3”更改为“7”.)

只是重复一遍.所以:当然,对于一个长度为十的数组.我的意思是func后缀(来自:Int)与“2”将与dropFirst(_ :)与“8”相同,例如.

同样upTo / through似乎与dropLast(_ :)完全相同

除了方便之外还有什么区别吗?

(也许是在错误的条件,性能或?)

我想知道,事实上,在Swift中是否只是通过调用另一个来实现?

它们完全不同.

> suffix(from:)

>由Collection协议定义.
>从给定的起始Index返回Subsequence.
>记录O(1)的时间复杂度(你可以see its default implementation here).
>如果传递的索引超出范围,则运行时错误.

> dropFirst(_:)

>由Sequence协议定义.
>返回SubSequence,其中从序列的头部删除了给定的最大元素数.
>记录的时间复杂度为O(n)*.虽然its default implementation实际上具有O(1)的时间复杂度,但这只是推迟了O(n)遍历删除元素直到迭代.
>如果输入的数字大于序列的长度,则返回空子序列.

*与所有协议要求记录的时间复杂性一样,符合类型可能具有较低时间复杂度的实现.例如,RandomAccessCollection的dropFirst(_ :)方法将在O(1)时间内运行.

但是,当涉及到Array时,这些方法的行为恰好相同(除了处理超出范围的输入).

这是因为Array的Int类型的索引从0开始并按顺序计数到array.count – 1,因此意味着删除前n个元素的子序列是从索引n开始的相同子序列.

同样因为Array是RandomAccessCollection,两种方法都将在O(1)时间内运行.

总结

以上是内存溢出为你收集整理的swift – 后缀(来自:)和dropFirst(_ :)之间有什么区别吗?全部内容,希望文章能够帮你解决swift – 后缀(来自:)和dropFirst(_ :)之间有什么区别吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1044770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存