これまでscalaコードを書くときはScala Plugin for Eclipse使っていましたが、インデントが崩れるのと色づけくらいしかやってくれないので、さほどメリットはありません。
今日試してみたらNetBeansプラグインの方がダントツにいいです。
このページの「1.Get Started with NetBeans 6.5 beta+」で試してみました。コード補完がばっちりで、コードインデントもきれい。

(隠れてますけど、object Main0 extends Main1 です。)
上の画像をみるとわかると思いますが、
■コード記述時に既に型推論してくれている。
■記述したJavaDocもリアルタイムで表示されている。
■Java API/Scala APIともに完璧にサジェストしてくれる。
これスゴくない?
NetBeans使うとScalaの学習効率よくなると思いますよ。
今日のところ残念ながら、
■NetBeans6.5 beta + scala pluginの組み合わせが、Windows Vistaでは動作しない(既知でdev版では修正済みとのこと)。
■NetBeans NightlyBuildでは、pluginのインストールが依存関係が解決しなくて(僕には探せなくて)成功しない。
という点は確認しました。6.5の正式リリースが待ち遠しい感じ。
今日はscala勉強会@東北第二回ありました。
一番学んだことは、scalacでコンパイルしたclassをjavapにかけてみるとscalaコンパイラがどういう変換を掛けているのかわかりやすい。特にJavaからScalaを呼びたいときには有効な解析方法。
以下、おさらいコード
//コードブロックをスレッドに渡す
//引数に型を指定しないと遅延評価にできる
//scala.concurrent.ops#spawn
def spawn(p: => Unit) = {
val t = new Thread() { override def run() = p }
t.start()
}
def spawnWatchDog(): Unit = spawn {
while (true) {
Thread.sleep(10000)
println("xxxxx")
}
}
//try-cacheも式
val serverSocket = try {
new ServerSocket(port)
} catch {
case e: IOException => fatal("")
}
//ここからは消化不良。後で勉強。
//scala.Console#withOut
val outVar
= new
DynamicVariable[PrintStream](java.lang.System.out)
def withOut[T](out: PrintStream)(thunk: =>T): T =
outVar.withValue(out)(thunk)
scala.Console.withOut(bufout) {
someFunc()
}
//コンパイラの中身
//scala.tools.nsc.CompilerCommand#processArguments
//scala.tools.nsc.Settings
//scala.tools.nsc.reporters.ConsoleReporter
//scala.tools.nsc.util.Position
//を辿って勉強すると良い