[Scala]objectとtraitの名前って一緒にできないんだっけ?
コンパイルは通るけれど、実行するとエラーになります。
mainがないと怒られます。
[trait UT]と[object UT]の名前を変えればうまくいきます。
Scala 2.9.0.1
trait UT { // ★コレと def test(name:String, test:Any, answer:Any):Boolean = { val result = test == answer if (! result) { println(name) println("test: "+test) println("answer:"+answer) } result } } object Foo extends UT { /** 最大公約数(Greatest Common Divisor) */ def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b) def test() { test("最大公約数1", gcd(2, 3), 1) test("最大公約数2", gcd(12, 33), 3) test("最大公約数3", gcd(-12, 33), 3) } } object UT { // ★コレ def main(args:Array[String]) { println("UT") Foo.test() } }
D:\users\a-san\private\scala\test>scalac UT.scala D:\users\a-san\private\scala\test>scala UT java.lang.NoSuchMethodException: UT.main([Ljava.lang.String;) at java.lang.Class.getMethod(Class.java:1605) at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:74) at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101) at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:33) at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:40) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:56) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)