無駄に関数を返す関数を書いてみた
let fizz = "Fizz"
let buzz = "Buzz"
func getGenerator(num: Int, out:String) -> (Int -> String) {
func getStr(targetNum:Int) -> String {
if targetNum % num == 0 {
return out
} else {
return ""
}
}
return getStr
}
for i in 1..<101 {
var result:String? = "";
for s in [3,5] {
var getStr = getGenerator(s, s == 3 ? fizz : buzz)
result = result! + getStr(i)
}
if result != "" {
println(result!)
} else {
println(i)
}
}
所感
まだ Swift本の"A Swift Tour" の途中までしか読んでないから色々よくわかってないけど、直感的に三項演算子とかも使えて面白かった。
String型の変数の結合の時に "! をつけろ" とコンパイラが怒るので直したんだけど、よくわからない。
個人的に、Obj-Cよりは取っ付きやすくて楽しい。
読みやすさを心がけてみた
let fizz = "Fizz"
let buzz = "Buzz"
func fizzbuzz(a:Int) {
if (a % 15 == 0) {
println(fizz + buzz)
} else if (a % 5 == 0) {
println(buzz)
} else if (a % 3 == 0) {
println(fizz)
} else {
println(a)
}
}
var array = [Int]()
for i in 1..<100 {
array.append(i);
}
array.map{ fizzbuzz($0) };