Scala ってかわいいですね!

最近は Scala ってゆう言語が流行っているみたいで、私もすこしやってみています>< インストールがけっこう大変だったり、起動がゆっくりしていて動いているのかときどき不安になったりするけど、たのしいです!

Scala は型が強い関数型の側面と、手続型の側面のりょうほうもっていて、そのうえで Java の歴史ある(笑)たくさんの資産が動くので、とてもおもしろいです。actor モデルとかも採用してるみたいだし、まだやってないけど、そのうちやってみようとおもいます!

ところでところで、Scalajava.util.List なオブジェクトを Scala での Collection っぽく扱えるようにする方法が解らなくて大変でした。。。でも scala.collection.jcl.Buffer.apply を使えばいいことがわかりました。

Buffer.apply(numbers).map( _.asInstanceOf[Int] )

java.util.list で java.lang.Integer な numbers を Int の Collection にしたいときはうえみたいにしたらできました。 asInstanceOf はキャストです。_ は Perl の $_ みたいなやつのらしいです。_ をつかったときは、=> をつかった関数定義にしなくてよくて楽です。

でも、毎回 Buffer.apply を書きのはめんどうなので

implicit def juL2sC[T](list: java.util.List[T]):BufferWrapper[T] = Buffer.apply[T](list)

numbers.map( _.asInstanceOf[Int] )

みたいにすることにしました。implicit def が宣言されているスコープでは、この宣言で変換できるオブジェクトは変換されます。オープンクラスをフレキシブルに実装している感じですてきです! スコープ内でしか効かないのでオープンクラスほど危険ではない感じです。implicit def はメソッド名はあんまり重要じゃなくて、周りについている型がとても重要みたいです。

はてなハイクでも書いてるのでよろしくお願いします>< http://h.hatena.ne.jp/keyword/Scala