我是Scala的新手。我对下面的代码为什么会抛出异常感到很困惑。我知道Function1[Int, Int]
有一个类型为Int => Int
的抽象apply
方法需要被定义。下面的oddfunc
不是已经定义了吗?为什么x(3)
没有调用在oddfunc
中定义的具体apply
方法呢?
Welcome to Scala version 2.11.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25).
Type in expressions to have them evaluated.
Type :help for more information.
scala> trait oddfunc extends Function1[Int,Int] {
| def apply(a: Int): Int = a+3
| }
defined trait oddfunc
scala> val x = new oddfunc{}
x: oddfunc = <function1>
scala> x(3)
java.lang.AbstractMethodError: $anon$1.apply$mcII$sp(I)I
at oddfunc$class.apply(<console>:8)
at $anon$1.apply(<console>:8)
... 43 elided