Mas*_*imo 0 arrays types swift
我想知道swift数组上的reversed()方法:
var items = ["a", "b", "c"]
items = items.reversed()
Run Code Online (Sandbox Code Playgroud)
来自Apple doc的反转方法的签名表示它返回一个
ReversedRandomAccessCollection<Array<Element>>
可以将其分配回项目而不做苹果医生说的那样
例如,要获取数组的反转版本,请从reverse()方法的结果初始化一个新的Array实例.
还是会在将来出现问题?(因为编译器没有抱怨)
在Swift 3中,对于一个数组有3个revers()重载:
func reversed() -> ReversedRandomAccessCollection<Self>
(O(1))func reversed() -> ReversedCollection<Self>
(O(1))func reversed() -> [Self.Iterator.Element]
(O(n))默认情况下,reversed()
选择RandomAccessCollection的重载并返回ReversedRandomAccessCollection.但是,当你写作
items = items.reversed()
Run Code Online (Sandbox Code Playgroud)
你强迫RHS返回一个可转换为LHS([String]
)的类型.因此,只选择返回数组的第3个重载.
该重载将复制整个序列(因此O(n)),因此覆盖原始数组没有问题.
而不是items = items.reversed()
创建数组的副本,反转它并将其复制回来,您可以使用变异函数达到相同的效果items.reverse()
,该函数在不复制数组两次的情况下就地进行复原.
归档时间: |
|
查看次数: |
119 次 |
最近记录: |