理解抽象类型

拉里

我有以下课程:

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
}

我将得到String类型。有人可以解释吗?

特拉维斯·布朗(Travis Brown)

我可以!这是一个错误这是马丁·奥德斯基(Martin Odersky)本人所说的“ Scala类型系统中的一个基本问题”的结果(请参阅有关该问题的评论进行讨论,以及今天上午早些时候提出的这个问题)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章