Ali*_*ehi 4 scala playframework-2.0
嗨其他Scala开发人员,
任何人都可以向我解释下面的代码中的类型推断有什么问题,以及如何修复它.
以下代码是使用Scala 2.10.2的Play 2.2的自定义操作
class Test {
trait Entity
class NodeRequest[A,K <:Entity](val entity: K,
val request: Request[A])
extends WrappedRequest[A](request)
def LocateResource[A,K](itemId: Int, v: List[K],
forceOwners:Boolean = true) =
new ActionBuilder[NodeRequest[A,K]]() {
def invokeBlock[A](request: Request[A],
block: (NodeRequest[A,K]) => Future[SimpleResult]) = {
Future.successful(Ok)
}
}
[error] Test.this.NodeRequest[A,K] takes no type parameters, expected: one
[error] def LocateResource[A,K](itemId: Int, v: List[K] , forceOwners:Boolean = true) = new ActionBuilder[NodeRequest[A,K]]() {
[error] ^
Run Code Online (Sandbox Code Playgroud)
错误消息有点令人困惑 - 它实际上是指ActionBuilder的类型参数.您需要的是类型函数(或更具体地,部分类型的应用程序).这在Scala中有点棘手.Scala 2.8语言参考实际上说你做不到,但事实并非如此.试试这个:
def LocateResource[A,K](itemId: Int, v: List[K],
forceOwners:Boolean = true) =
new ActionBuilder[({type ?[B] = NodeRequest[B,K]})#?]() {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2088 次 |
最近记录: |