ScalaとJavaの連携初歩
といいながら、Javaとの連携が気になっていたのでとりあえず簡単なサンプルを書いてJavaのArrayListを使ってみました。
package com.appspot.seratch.scala import java.util.ArrayList object JavaArrayListSample { def main(arg : Array[String]) = { var list = new ArrayList[String]() list.add("hoge") list.add("foo") list.add("var") var iter = list.iterator while ( iter.hasNext() ) { var each = iter.next println(each) } } }
なるほど、ちょっと感触を得てきた気がします。代入するときに型を指定せずvarで定義した変数に突っ込んでしまえるスクリプト言語的な自由さがあります。
追記(4/23):
型推論のある言語の経験がなくてよく知らなかったのですが、「スクリプト言語的な自由さ」というよりも、コードの記述での煩雑さを避ける事ができつつ、コンパイル時には型のチェックが厳密に行えるというところがポイントなのかなと。もう少ししっかり各種ドキュメントを読んだ方がよさそう。
[webmaster@localhost TypeInference]$ cat InferenceTest1.scala object InferenceTest1 extends Application { val x = 1 + 2 * 3 // the type of x is Int val y = x.toString() // the type of y is String def succ(x: Int) = x + 1 // method succ returns Int values val succX = succ(x) val succY = succ(y) } [webmaster@localhost TypeInference]$ [webmaster@localhost TypeInference]$ scalac InferenceTest1.scala InferenceTest1.scala:8: error: type mismatch; found : java.lang.String required: Int val succY = succ(y) ^ one error found [webmaster@localhost TypeInference]$