for文嫌いなので、視界から無くそうと思い#eachを実装した。
単にRubyのホームシックです。
Array+each.swift
extension Array {
func each (blk: T -> ()) {
for object in self {
blk(object)
}
}
}
Middle.swift
["I", "Love", "Swift", "!"].each {(s) in
println(s)
}
// => I / Love / Swift / !
心が洗われる文法ですね
ちなみに() in
を省略することも出来る
Short.swift
["I", "Love", "Swift", "!"].each { println($0) }
// => I / Love / Swift / !
この場合はprintlnそのものを渡してもいいですが、func呼ぶだけのclosureを書くのが好みです。
また、Swiftちゃんは賢いので、closureで型を書かなくても良い。
型を書いてeach.swift
["I", "Love", "Swift", "!"].each {(s: String!) in
println(s)
}
// => I / Love / Swift / !
拡張しまくって闇鍋みたいにしたい。
追記:ホントはもっと上位のプロトコルに実装するのがいいと思います。