通过字符串中的字符向后迭代的最Swiftian方法是什么?即for ch in str
,只是反过来?
我想我必须遗漏一些明显的东西,因为我刚才能想到的最好的是:
for var index = str.endIndex;
index != str.startIndex;
index = index.predecessor() {
let ch = str[index.predecessor()]
...
}
Run Code Online (Sandbox Code Playgroud)
我意识到"什么是最好的..."可能被归类为主观的; 我想我真正想要的是一种简洁易读的方法.
编辑:虽然reverse()工作并且很简洁,但与上面相比,它看起来可能效率很低,即看起来它实际上并不是向后迭代,而是在字符串中创建字符的完整反向副本.如果你正在寻找一些10,000字符字符串末尾通常是几个字符的东西,那么这比我原来的要糟糕得多.因此,我暂时搁置这个问题以吸引其他方法.
pNr*_*Nre 25
该reversed
函数反转a C: CollectionType
并返回ReversedCollection
:
for char in "string".characters.reversed() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果您发现reversed
预先反转字符串,请尝试:
for char in "string".characters.lazy.reversed() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
lazy
返回一个延迟评估的序列(LazyBidirectionalCollection
)然后reversed()
返回另一个LazyBidirectionalCollection
反向访问的序列.
截至2015年12月,使用Swift 2.1版,正确的方法是
for char in string.characters.reverse() {
//loop backwards
}
Run Code Online (Sandbox Code Playgroud)
字符串不再符合SequenceType<T>
但其字符集符合.
归档时间: |
|
查看次数: |
10074 次 |
最近记录: |