向后迭代字符串中的字符的最 Swiftian 方法是什么?即喜欢for ch in str
,仅相反?
我想我一定错过了一些明显的东西,因为我现在能想到的最好的办法是:
for var index = str.endIndex;
index != str.startIndex;
index = index.predecessor() {
let ch = str[index.predecessor()]
...
}
我意识到“什么是最好的……”可能被归类为主观的;我想我真正想要的是一种简洁但可读的方式来做到这一点。
编辑:虽然reverse()可以工作并且很简洁,但与上面的相比,看起来这可能相当低效,即看起来它实际上并不是向后迭代,而是创建字符串中字符的完整反向副本。比如说,如果您要查找的内容通常是 10,000 个字符的字符串末尾的几个字符,那么这会比我原来的要糟糕得多。因此,我暂时保留这个问题以吸引其他方法。
The reversed
函数反转aC: CollectionType
并返回一个ReversedCollection
:
for char in "string".characters.reversed() {
// ...
}
如果你发现reversed
预反转字符串,尝试:
for char in "string".characters.lazy.reversed() {
// ...
}
lazy
返回一个延迟计算的序列(LazyBidirectionalCollection
) then reversed()
返回另一个LazyBidirectionalCollection
这是反向访问的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)