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

前端之家收集整理的这篇文章主要介绍了swift – 后缀(来自:)和dropFirst(_ :)之间有什么区别吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我突然想到在使用 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)时间内运行.

原文链接:https://www.f2er.com/swift/318767.html

猜你在找的Swift相关文章