也许我需要复习依赖类型,但我不明白为什么以下不起作用:
trait Code { type In; type Out }
trait Handler[In, Out]
class Foo(val code: Code)(handler: Option[Handler[code.In, code.Out]])
错误:
<console>:52: error: not found: value code
class Foo(val code: Code)(handler: Option[Handler[code.In, code.Out]])
^
<console>:52: error: not found: value code
class Foo(val code: Code)(handler: Option[Handler[code.In, code.Out]])
^
编辑:我现在可以看到如何解决这个问题。我仍然想知道为什么以上不起作用?
答案 0 :(得分:2)
另一种解决方法:
trait Foo {
val code: Code
val handler: Handler[code.In, code.Out]
}
答案 1 :(得分:1)
handler
参数似乎不了解code
参数。您是否能够完成定义此类特征的相同事情?
trait Code[In, Out]
trait Handler[In, Out]
class Foo[In, Out](val code: Code[In, Out])(handler: Option[Handler[In, Out]])
答案 2 :(得分:1)
可能是这些更简单的方法之一:
object Main {
def main(args: Array[String]): Unit = {
demo1
demo2
}
def demo1 {
trait Code { type In; type Out }
trait Handler[In, Out]
class Foo(val code: Code) {
private val handler: Option[Handler[code.In, code.Out]] = ???
}
}
def demo2 {
trait Code[In, Out]
trait Handler[In, Out]
class Foo[In, Out](val code: Code[In, Out])(handler: Option[Handler[In, Out]])
}
}
答案 3 :(得分:1)
这是一个记录为issue 5712,由于某种原因被称为“改进”而不是错误。因此,目前构造函数无法解析具有多个参数列表的依赖类型。