今天看了一個Scala寫的項目,裏面看到有一段這樣的代碼:
html
trait BaseController extends BSONImplicits with JSONImplicits with StrictLogging { this: Controller => ...... }
而後經過看Scala Language Specification,知道這個語法叫作SelfType的。this
這裏面咱們能夠看到BaseController是擴展的BSONImplicits,可是BSONImplicits的基礎類並不是Controller,因此經過這個語法讓Scala將這個trait認爲是Conroller類。而且BaseController能夠使用Controller類的全部方法和變量。spa
能夠看出SelfType語法類至關於繼承,而且更靈活些。scala
更多用途咱們能夠參考http://docs.scala-lang.org/tutorials/tour/explicitly-typed-self-references.html。code