我一直在使用带有Java的lagom一段时间没有问题,但我正在努力让它与scala一起工作(披露 - 因为我对scala相当新,我可能正在做一些愚蠢的事情) .
我已经定义了一个(非常)最小的lagom服务(下面)不应该导致任何问题,但是我在实现代码中得到了下划线参数的scala编译时错误“ missing parameter type ”,我不明白为什么......我认为scala隐式打字应该做必要但显然我错了 .
有人可以帮忙吗?我可能做了一些愚蠢的事,但对于我的生活,我看不出是什么 .
此致,瑞克
这是我的服务接口(API)定义(在文件MyService-api / MyTestService.scala中):
trait MyTestService extends Service {
def myTest2(cmd: String) : ServiceCall[NotUsed, String] // (abstract) method definition
override final def descriptor = { // Service Descriptor
import Service._
named("myTest2") // service name
.withCalls {
pathCall("myTest/:cmd", myTest2 _) // will become the REST URI
}
.withAutoAcl(true)
}
}
这是导致编译器错误的实现定义(在文件MyService-impl / MyTestServiceImpl.scala中):
class MyTestServiceImpl extends MyTestService {
// this is where the error happens....
override def myTest2() = ServiceCall { _ => Future.successful("Hi MyTest2 user") }
^
^
(here)
}
1 回答
如果您粘贴确切的错误输出会很好,但问题是您将
myTest2
定义为采用String
的方法,即def myTest2(cmd: String)
,但之后您已将其实现为不带参数的方法,即override def myTest2()
. 将其更改为override def myTest2(cmd: String)
,这将解决您的问题 .特定错误的原因是're getting is that because you'实际上没有覆盖定义的
myTest2
方法,Scala编译器无法推断ServiceCall
的类型,你推断出你传递给ServiceCall
的lambda中参数的类型 .