在 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