与方法调用相比,这个for循环的等价物是什么?

时间:2011-04-08 16:31:00

标签: scala

鉴于此代码:

for {
  evListeners <- eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
  listener <- evListeners
} listener.asInstanceOf[A => Unit].apply(event)

如何将其转换为方法调用?我尝试了这个,但它抛出了一个错误,而上面没有:

val listeners = eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
listeners.foreach(_.asInstanceOf[A => Unit].apply(event))

1 个答案:

答案 0 :(得分:3)

假设eventListeners是某种类型的Map[Class[Any],Seq[Any]],您必须添加一个foreach来电,因为该地图上的get会为您提供Option[Seq[Any]]

val evListeners = eventListeners.get(manifest.erasure.asInstanceOf[Class[Any]])
evListeners.foreach(_.foreach(_.asInstanceOf[A => Unit].apply(event)))