koansでscala基本文法のお勉強

2010-12-10

koansでscala基本文法のお勉強

恥ずかしながらkoansって何?という段階からスタート。 ruby koansっていうのがあるそうで、ドリルのように解いていくと自然とrubyの基礎文法が身につくという素晴らしきモノ。 そのscala版があって、私のように参考書を読むとすぐに寝ちゃう人はコチラの方がおすすめ。 ただし、ちょっと使い方が分かりにくいので、解説。 まずは、rubbish様作成のscala koansをダウンロード。→https://github.com/rubbish/scala-koans ※当然ですが、scalaが実行できる環境じゃないと動かないです。 落したものは、以下のような構成になってます。

1
2
3
4
5
6
7
8
9
.
├── README.markdown
├── TODO.org
├── lib_managed
├── project
├── sbt
├── sbt-launch-0.7.4.jar
├── sbt.bat
└── src

windowsの人はsbt.bat。Linuxならsbtを実行。 プロンプトが表示されたら ~koansと入力してenter 実行ファイルのパスの関係があるので、実行するときは該当ディレクトリで実行する。

1
2
3
4
5
6
$ ./sbt 
[info] Recompiling project definition...
[info] Source analysis: 1 new/modified, 0 indirectly invalidated, 0 removed.
[info] Building project scala-kaons 1.0 against Scala 2.8.0
[info] using Project with sbt 0.7.4 and Scala 2.7.7
>~koans

後は、一体全体何をどうすればいいのか?です。 1. コンソールに修正すべきファイルと、ヒントが出力される 2. 該当ファイルをテキストエディタで開いて修正する。 3. 修正を保存すると、勝手に再コンパイルされる。修正が合っていれば、次の問題へ。   試しに1問目をやってみます。 以下のようにヒントが出ます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[info] == org.scalakoans.Koans ==
[info] Suite Starting: AboutAsserts
[info] Test Starting: should be true
[info] *****************************************
[info] *****************************************
[info]
[info]
[info]
[info] Please meditate on koan "should be true" of suite "AboutAsserts"
[info]
[info]
[info]
[info] *****************************************
[info] *****************************************

新しいコンソールで、該当のソースコードAboutAsserts.scalaを開く。

1
$ vi src/test/scala/org/scalakoans/AboutAsserts.scala

問題を解く(修正する)

1
2
3
4
5
6
7
7   koan ("should be true") {
8 assert(false) // should be true
9 }
↓↓↓
7 koan ("should be true") {
8 assert(true) // should be true
9 }

セーブすると、テストが再実行される。合って入れば次の問題へ移る。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[info] == org.scalakoans.Koans ==
[info] Suite Starting: AboutAsserts
[info] Test Starting: should be true
[info] Test Passed: should be true
[info] Test Starting: should be true with message
[info] *****************************************
[info] *****************************************
[info]
[info]
[info]
[info] Please meditate on koan "should be true with message" of suite "AboutAsserts"
[info]
[info]
[info]
[info] *****************************************
[info] *****************************************

ようするに、xUnit系のテストツールのアサーションを利用したドリルになっているです。 何というか、こういうの作ってくれる人は素晴らしいです。きっと善意の塊みたいな人だ!( ゜д゜) 多少分かりづらいところもありますが、それも含めてscalaの勉強ということで。 |彡サッ