って書けるんですね 知らなかった・・・ コンパニオンケースクラス case classでobjectが定義されてしまってできないと思っていた コンパイラがすげーよ・・・ case class Foo(i:Int) object Foo { def apply() = new Foo(0) } //scala> Foo //res1: Foo.type = Foo$@61cc1457 //scala> Foo() //res2: Foo = Foo(0) //scala> Foo(1) //res3: Foo = Foo(1) さすがに同じapply定義すると怒られる case class Foo(i:Int) object Foo { def apply(i:Int) = new Foo(i) } //<console>:32: error: method apply is defined