以前より注目していた勉強会なのですが、
以下のやつに初参加しました。
天領倉敷Scala第9回勉強会
http://partake.in/events/fa650520-a691-4de7-ad54-fd48a6b4ad06
今までのおさらいが主なテーマだったのですが、
和やか(非:名古屋化)な雰囲気で質疑などができ大変よい刺激を受けました。
また、twitter4jのラッパであるtwitter4sの話なども今後の期待ができる内容でワクワクです。
既に報告blogが書かれてます。
天領倉敷ScalaでTwitter4Sについて発表してきました
http://d.hatena.ne.jp/mao_instantlife/20120701
ということで久しぶりにScalaを触りました。
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
- 作者: Martin Odersky,Lex Spoon、Bill Venners,羽生田栄一,長尾高弘
- 出版社/メーカー: インプレス
- 発売日: 2009/08/21
- メディア: 単行本
- 購入: 18人 クリック: 687回
- この商品を含むブログ (121件) を見る
参考書(手持ちは初版)は14章まで目を通していたのですが、
勉強会で議論になったケースクラスは15章の内容だったので
勉強会の後軽く目を通してみました。
う〜ん、こういうのは使ってみるしかないなぁという感じ。
ところで、懇親会でTwitter4Sのサンプルプログラムを書いてくれと言うリクエストが飛んでいた。
ラッパなので出来ているところは今でも動くらしい。
Scalaはどうも今自分に必要な言語って感じはしないので・・・という話をしていたら
scala-library.jarを読みこめばgroovyからscalaを呼べるらしい。
まぁ、コンパイルすればJavaのクラスになるんだから、そりゃそうだな。
Calling Scala from Groovy
http://groovy.codehaus.org/Calling+Scala+from+Groovy
動かしてみたらどうもdoubleがDoubleと大文字で書かないと動かないみたい。
もしかしたらバージョンによったら動いていたのかもしれない。
で、以下のようになる。
Complex.scala
class Complex(real: Double, imaginary: Double) { def re = real def im = imaginary override def toString() = "" + re + (if (im < 0) "" else "+") + im + "i" }
ComplexMain.groovy
a = new Complex(1.2, 3.4) b = new Complex(1.2, 3.4) println a assert a == b
これだけで動く。
堅く作るべきところだけscalaで作ってgroovyをグルー的使い方をするのが実にスムースである。
このスタイルはアリなんじゃないかなぁ。
で、実行結果だが実はAssertion failedが出る。
ここで、scalaのクラスをcase classにしたらAssertion failedが出なくなる。
これケースクラスのサンプルとしてOKなのかしら?
いまいち自身がないので敢えて晒しておく。
-
- -
追記
問題ないみたい。
scalaのcase classでequalsが勝手に実装されてて
それをgroovyから呼び出してることになる。