我一直在使用带有Java的lagom一段时间没有问题,但我正在努力让它与scala一起工作(披露 - 因为我是 斯卡拉相当新,我可能做了一些愚蠢的事情。
我已经定义了一个(非常)最小的lagom服务(下面),这不应该导致 任何问题,但我得到scala编译时错误" 缺少参数类型 "对于实现中的下划线参数 代码和我不明白为什么....我以为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)
}
答案 0 :(得分:2)
如果您粘贴了确切的错误输出会很好,但问题是您将myTest2
定义为采用String
的方法,即def myTest2(cmd: String)
,但是您和#39; ve将其实现为不带参数的方法,即override def myTest2()
。将其更改为override def myTest2(cmd: String)
,这样可以解决您的问题。
您遇到的具体错误的原因是因为您实际上没有按照定义覆盖myTest2
方法,因此Scala编译器无法推断出{{ServiceCall
的类型1}}你意味着要返回,因此无法推断你传递给ServiceCall
的lambda中参数的类型。