Scala for expression with Java Collection
1行の import を加えるだけで Scala の for expression で Java の collection を iterate できる。
http://www.scala-lang.org/docu/files/collections-api/collections_46.html
例は、Hashtable のサブクラスである Properties を Scala の for expression で iterate。
Properties の初期化部分は、いちいち props.setProperty を繰り返し書きたくなかったので、trait などの anonymous subclass の説明で出てきたような書き方を行うと、期待した動作になった。つまり、いちいち props. の部分を指定しなくてすむ。実際には Properties を親に持つ anonymous class が作られ、コンストラクタで、これらの setProperties が呼ばれるバイトコードになる。
import java.util._ import collection.JavaConversions._ object Prop { def main(args: Array[String]) { val props = new Properties() { setProperty("US", "DC") setProperty("UK", "London") setProperty("JP", "Tokyo") } for ((k,v) <- props) { println(k + ": " + v) } println(props.getClass.toString) } }