后缀(来自:)和dropFirst(_ :)之间是否有任何区别?

Fat*_*tie 7 subsequence swift swift3

我突然想到在使用Swift中的子序列时,

func suffix(from: Int)似乎与just相同dropFirst(_:)(显然,在长度为"10"的数组中,您只需将输入值从"3"更改为"7".)

只是重复一遍.所以:当然,对于一个长度为十func suffix(from: Int)dropFirst(_:)的数组.我的意思是"2" 与"8" 相同,例如.

同样upTo/ through似乎是相同的dropLast(_:)

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

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

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

Ham*_*ish 7

它们完全不同.

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


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

这是因为 Array有一个Index类型Int从一个开始0并按顺序向上计数array.count - 1,因此意味着n删除了第一个元素的子序列是从索引开始的相同子序列n.

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