今日,明日とはてなの京都オフィスでScala Hackathonが開催されていて,参加しました.
Scalaは全く触ったことがなかったのですが,インストールから始めて,チュートリアルを読んだりして,Fizz Buzzを出すところまでできました.
インストール
Macならportで入る
% sudo port install scala
Hello, World(1)
scalaで対話的に実行できる
% scala Welcome to Scala version 2.7.3.final (Java HotSpot(TM) Client VM, Java 1.5.0_16). Type in expressions to have them evaluated. Type :help for more information. scala> println("Hello, World!") Hello, World!
Hello, World(2)
ファイルから実行
println("Hello, World!")
これをhello.scalaとして保存して,
% scala hello.scala Hello, World!
Hello, World(3)
オブジェクトを定義してコンパイルして実行
object Hello { def main(args: Array[String]) { println("Hello, World!") } }
これをHello.scalaとして保存して,
% scalac Hello.scala % scala Hello Hello, World!
Fizz Buzz
Fizz Buzzを出せれば面接に受かるらしい,とどこかで聞いたので,やってみました.
object FizzBuzz { def fizzbuzz(i:Int) = (i%3==0, i%5==0) match { case (true,true) => "Fizz Buzz" case (true,false) => "Fizz" case (false,true) => "Buzz" case (false,false) => i } def main(args: Array[String]) { println((1 to 30).map(i => fizzbuzz(i))) } }
% fsc FizzBuzz.scala % scala FizzBuzz RangeM(1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz) %
きれいに書けたと思います.
参考
1つめの記事はすぐに読める上にチートシート的に見返せて便利でした.
2つめのチュートリアルは英語だったので,読むのに時間がかかってしまいましたが,だいたい分かるようになったので,よい資料だと思います.
まとめ
初日としては順調な学習を行えたので,明日のHackathonではなにか実用的なアプリケーションを作りたいと思います.
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
- 作者: Martin Odersky,Lex Spoon、Bill Venners,羽生田栄一,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2009/08/21
- メディア: 単行本
- 購入: 17人 クリック: 546回
- この商品を含むブログ (118件) を見る