【发布时间】:2011-04-08 18:58:42
【问题描述】:
val eventListeners = new HashMap[Class[Event], ArrayBuffer[Event => Unit]]
def addEventListener[A <: Event](f: A => Unit)(implicit mf: ClassManifest[A]): A => Unit = {
eventListeners.getOrElseUpdate(mf.erasure.asInstanceOf[Class[Event]], ArrayBuffer[Event => Unit]()) += f
f
}
正在投掷:
error: type mismatch;
found : (A) => Unit
required: (this.Event) => Unit
eventListeners.getOrElseUpdate(mf.erasure.asInstanceOf[Class[Event]], ArrayBuffer[Event => Unit]()) += f
为什么说它找到了(A) => Unit? f 的值是 (Event) => Unit 的函数。 A 不只是类型参数,不是签名吗?
调用示例:
addEventListener { e:FooEvent => .... }
【问题讨论】: