scala - передать аннотированный класс собственного типа дочернему объекту

извините, если это глупое название, я не знаю, как это ясно выразить

скажем, у меня есть черта ведения журнала:

trait Logging {
    def log(s:String)
}

и затем некоторая реализация

trait PrintlnLog extends Logging {
    def log(s:String) { println(s) }
}

который я использую вот так

class SomeProcess { this:Logging =>
   def doSomeJunk() {
      log("starting junk")
      ...
      log("junk finished")
   }
}

я мог бы использовать этот класс как

val p = new SomeProcess () with PrintLog
p.doSomeJunk()

теперь, что, если у меня есть это

class SubProcess { this:Logging => 
   def doSubJunk() {
      log("starting sub junk")
      ...
      log("finished sub junk")
   }
}

class ComplexProcess { this:Logging => 
   def doMoreJunk() {
       log("starting more junk")
       val s = new SubProcess with // ??? <-- help!
       s.doSubJunk()
       log("finished more junk")
   }
}

в ComplexProcess, я хочу создать экземпляр смешивания SubProcess в том же признаке ведения журнала, который был смешан в ComplexProcess, но ComplexProcess не знает, что это такое. есть ли способ получить ссылку на него?

5
задан dvmlls 5 March 2012 в 16:34
поделиться