3

我有以下课程:

abstract class Base {
  type T
  def myMethod: T
}

abstract class B extends Base {
  type T <: String
}

abstract class C extends Base {
  type T <: Int
}

现在,如果我写这个:

class Test{
    self: B with C => 
    // do sth with myMethod
}

myMethod 将导致 Int 类型的某事。另一方面,如果我这样写:

class Test{
    self: C with B => 
    // do sth with myMethod
}

我会得到类型字符串。有人可以解释一下吗?

4

1 回答 1

0

我可以!这是一个错误!根据 Martin Odersky 本人的说法,这是“Scala 类型系统中的一个基本问题”的结果(请参阅关于该问题的评论以进行讨论,以及今天早上早些时候的这个问题)。

于 2013-08-20T10:40:23.270 回答