(ことはじめ、って書いておいたらたぶん叩かれることはないだろうと思って・・・)
まだまだScalaは書き慣れないのですが、この前の1/11になごやかScala #8にて
『ScalaでFizzBuzzの例題を、パターンマッチで書いてみるといいよ!』
と聞いたので、がんばって色々書いてみようと思いました。
object FizzBuzz {
def fizzbuzz(n: Int):String = n match {
case x if x % 15 == 0 => "fizzbuzz"
case x if x % 3 == 0 => "fizz"
case x if x % 5 == 0 => "buzz"
case x => x.toString
}
def main(args: Array[String]) = {
(1 to 100).toList.foreach{ n =>
println(fizzbuzz(n))
}
}
}
うーん、素人目でも分かるように、無駄が多そうですね。
特にmainの中がなんかごちゃごちゃしてる気がするので、ここからもうちょっとすっきりするように書き直してみます。
object FizzBuzz {
def fizzbuzz(n: Int):String = n match {
case x if x % 15 == 0 => "fizzbuzz"
case x if x % 3 == 0 => "fizz"
case x if x % 5 == 0 => "buzz"
case x => x.toString
}
def main(args: Array[String]) = {
(1 to 100).map(fizzbuzz).foreach(println)
}
}
これでよいのかな?まだまだ慣れないけど、
っていう流れは main 見るだけでざっと分かるようになっているんじゃないかと思いました。 これって、main見るだけでざっと処理全体が分かる ≒ 概要、アウトラインを意味するように書けば良いのでは?って少し思いました。
まだまだ道のりは長そうです・・・。
この記事は書かれてから1年以上が経過しており、最新の情報とは異なる可能性があります