在较新版本的Swift中更好的方法吗?

时间:2015-05-18 19:13:02

标签: ios swift coding-style

我想迭代字母表。这个问题提供了一个解决方案:Iterate through alphabet in Swift

然而,问题已经很久了。在最新版本的Swift中是否有更好,更优雅的方式(特别是第一个答案)?

2 个答案:

答案 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)
    }