Scala mixin特征错误

时间:2015-05-07 18:57:36

标签: scala

以下代码段:

scala> trait User { def name: String }
defined trait User

scala> trait Tweeter {
     | user: User =>
     | def tweet(msg: String) = println(s"$name: $msg")
     | }
defined trait Tweeter

scala> trait Correct extends Tweeter with User { }
defined trait Correct

scala> trait Wrong extends Tweeter
<console>:9: error: illegal inheritance;
 self-type Wrong does not conform to Tweeter's selftype Tweeter with User
       trait Wrong extends Tweeter
                           ^

scala>

Tweeter有一个用户,那么为什么在扩展Tweeter时需要混合User?错了还是个特质!为什么我需要混合用户?

1 个答案:

答案 0 :(得分:1)

Tweeter没有User,它要求Tweeter中的任何混合都是一个(在User中混合)。

trait Wrong不会混入User,因此无法符合Tweeter的自我类型。

您需要将User混合到Wrong,就像您使用Correct Wrong一样,还需要{{1}作为符合User自我类型的自我类型。

Tweeter