未找到与路径相关的类型值

时间:2014-06-13 14:23:14

标签: scala dependent-type

也许我需要复习依赖类型,但我不明白为什么以下不起作用:

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]])
                                                                  ^

编辑:我现在可以看到如何解决这个问题。我仍然想知道为什么以上不起作用?

4 个答案:

答案 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,由于某种原因被称为“改进”而不是错误。因此,目前构造函数无法解析具有多个参数列表的依赖类型。