siento si eso es un título tonto, no sé cómo expresar esto claramenteScala - pass clase anotada tipo auto al objeto secundario
decir que tengo un rasgo de registro:
trait Logging {
def log(s:String)
}
y luego alguna aplicación
trait PrintlnLog extends Logging {
def log(s:String) { println(s) }
}
que utilizo como esto
class SomeProcess { this:Logging =>
def doSomeJunk() {
log("starting junk")
...
log("junk finished")
}
}
que podría utilizar esta clase como
val p = new SomeProcess() with PrintLog
p.doSomeJunk()
Ahora lo que si tengo este
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")
}
}
en ComplexProcess quiero crear una instancia de una mezcla en el mismo rasgo de registro que se ha mezclado en ComplexProcess subproceso, pero ComplexProcess no sabe qué es eso. ¿Hay alguna forma de obtener una referencia?
esto es esencialmente lo que estoy haciendo, pero es feo porque tengo todos estos rasgos diseminados a lo largo de mi código cuyo único propósito es el registro en tarta. esperaba que hubiera una mejor manera – dvmlls