¿Qué significa el siguiente mensaje de error?no puede anular un miembro concreto sin un tercer miembro que está anulado por
no puede anular un elemento de hormigón sin un tercer miembro que es anulado por tanto (esta regla es diseñado para evitar `` accidentales anulaciones '');
Estaba tratando de hacer modificaciones de rasgos apilables. Es un poco después del hecho ya que ya tengo una jerarquía en su lugar y estoy tratando de modificar el comportamiento sin tener que reescribir una gran cantidad de código.
que tienen una clase base llamada AbstractProcessor que define un método abstracto especie de la siguiente manera:
abstract class AbstractProcessor {
def onPush(i:Info): Unit
}
Tengo un par de rasgos existentes, para implementar diferentes comportamientos OnPush.
trait Pass1 {
def onPush(i:Info): Unit = { /* stuff */ }
}
trait Pass2 {
def onPush(i:Info): Unit = { /* stuff */ }
}
Así que me permite usar new AbstractProcessor with Pass1
o new AbstractProcessor with Pass2
.
Ahora me gustaría hacer algo de procesamiento antes y después de la llamada onPush en Pass1 y Pass2 mientras minimizo los cambios de código a AbstractProcessor y Pass1 y Pass2. Pensé en la creación de un rasgo que hace algo como esto:
trait Custom extends AbstractProcessor {
abstract override def onPush(i:Info): Unit = {
// do stuff before
super.onPush(i)
// do stuff after
}
}
Y su uso con new AbstractProcessor with Pass1 with Custom
y me dieron ese mensaje de error.
En el momento en que recibí su respuesta, descubrí que podía crear un rasgo para onPush y que todo se extendiera. Supongo que me confundí con la "tercera" palabra. Me pregunto si "sin un miembro de base que sea anulado por ambos" daría una mejor pista. – huynhjl