noki雑記

iOS、ときどきAndroid

mapとforEachとfor

mapとforEach

返り値を必要とするならmapメソッド、要らないならforEachメソッドを使います。書き方は同じ。
以下forEachの例(アルファベットの一覧を作成)。

// a to Z
var chars : [Character] = []
["a", "A"].forEach {
    let scalar = $0.unicodeScalars
    let code = scalar[scalar.startIndex].value
    (0..<26).forEach {
        chars.append(Character(UnicodeScalar(code + $0)))
    }
}

forとforEach

上記コードの「(0..<26).forEach」の部分をfor文で書くと下のようになります。

for i : UInt32 in 0..<26 {
    chars.append(Character(UnicodeScalar(code + i)))
}

定数 i の型を指定するか、内部でキャストする必要があります。
詳しく調べていないので(途中でギブアップ)推測ですが、mapやforEachの内部定数は、それが使われる時に正確な型が決まるのではないかと思っています。用途によってはforEachとかの方が扱いやすくていい。