我正在尝试使用scala创建一个小型消息传递系统。 我无法弄清楚如何使用//问题解决这个类/类型/泛型/层次结构问题
逻辑是:Request有一个函数列表,可以在到达时使用响应进行调用。当Response到达时,将调用getResult并使用模式匹配。似乎我无法调用Request上的list中的函数,这些函数可以被Response的任何子类型重载?
object Worksheet {
class Request {
//var op = List[( _<:Response ) => Unit]()
var op = List[Response => Unit]() // FIXED
}
class Response {}
class MyResult extends Response {}
class AnotherMyResult extends Response {}
val map = Map[String, Request]()
def getResult(a:Any) {
a match {
...
case r:Response =>
//map.get("").get.op foreach ((o) => o(r)) //PROBLEM
map("").op foreach ((o) => o(r)) //NO PROBLEM
...
}
}
}
请帮助;)
修改
def simpleop (r:MyResult) : Unit = { }
def req = new Request()
req.op += simpleop _ //PROBLEM STILL
map += ("" -> req)
答案 0 :(得分:0)
您无法使用simpleop
类型的参数调用方法Response
,因此您不能同时拥有case r:Response => map("").op foreach ((o) => o(r))
和req.op += simpleop _
。