我想迭代字母表。这个问题提供了一个解决方案:Iterate through alphabet in Swift
然而,问题已经很久了。在最新版本的Swift中是否有更好,更优雅的方式(特别是第一个答案)?
答案 0 :(得分:3)
您可以通过以下方式重载运算符...
:
func ...(start: Character, end: Character) -> Array<UnicodeScalar> {
var list : [UnicodeScalar] = []
let x = String(start).unicodeScalars
let y = String(end).unicodeScalars
for letter in map(String(start).unicodeScalars[x.startIndex].value...String(end).unicodeScalars[y.startIndex].value, {
(val: UInt32) -> UnicodeScalar in return UnicodeScalar(val) }) {
list.append(letter)
}
return list
}
然后你可以用一种很好的方式做到这一点:
for x in "a"..."z" {
println(x)
}
在上面的代码中,我们应该注意到始终start < end
,否则您可能会收到以下错误:
Can't form Range with end < start.
答案 1 :(得分:0)
优雅,没有。 Hackish ,是的。
var char : Character
for i in 65...90 {
char = Character(UnicodeScalar(i))
println(char)
}