【发布时间】:2012-06-12 19:01:18
【问题描述】:
我最近在 python 中长期中断后回到了 scala,并试图再次将我的思想围绕类型系统。我正在尝试制作一个非常简单的 Web URL 调度程序来再次熟悉该语言。到目前为止,我有:
trait Executable {
def execute(request: HttpRequest, response: HttpResponse): Future[HttpResponse]
}
class HelloWorldHandler extends Executable {
override def execute(request: HttpRequest, response: HttpResponse) = {
Future.value(response)
}
}
我认为我在这里拥有的是 Scala 等效的接口 Executable 和实现该接口的类。现在我想创建一个 URL 到处理程序的映射,如下所示:
val mapping: Map[String, _ <: Executable] = {
"/hello" -> new HelloWorldHandler()
}
当我编译这个时,我得到以下错误:
type mismatch;
found : (java.lang.String, pollcaster.handlers.HelloWorldHandler)
required: Map[String,pollcaster.Executable]
"/" -> new HelloWorldHandler()
^
我不确定我在这里的理解哪里出了问题,但如果能帮助我理解如何将一堆具有 Executable 特征的不同类放入地图对象中,我将不胜感激?
TIA
【问题讨论】:
标签: scala