LoginSignup
2
2

More than 5 years have passed since last update.

Swiftでfizzbuzzの試み

Last updated at Posted at 2014-07-20

無駄に関数を返す関数を書いてみた

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) };
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2