Desugar Scala 20 -- Self Type
Scala里有一个很有趣的语言特性叫做Self Type,可以用来限定一个trait可以被mixin到哪里去。
看个例子:
1 | trait User { |
User就仅仅相当于一个Interface,定义一个username。
Tweeter内的第一行是重点 self: User => 就限定了Tweeter只能被mixin到实现了User的类里面去。
由于可以确定Tweeter只能被mixin到实现了User的类里面去,这样Tweeter的tweet方法内就可以放心大胆地用 username 了。
VerifiedTweeter是一个很普通的class,别人new它的时候给什么字符串,它的username就是啥。

