Scala的Self-Type

原由

今天看了一個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.htmlcode

相關文章
相關標籤/搜索