Как добавить методы перед вызовом метода признака?

#scala #aop #traits

#scala #aop #Трейты

Вопрос:

У меня есть признак

 trait Trait {
  def method()
}
  

и некоторые реализации

 class A extends Trait {
  def method() = println("A")
}

class B extends Trait {
  def method() = println("B")
}

class C extends Trait {
  def method() = println("C")
}
  

Моя цель — добавить другой метод (скажем, ведение журнала) в признак (не реализации), который будет вызван непосредственно перед method . Какой рекомендуемый способ добиться этого?

Ответ №1:

Что-то вроде этого?

 trait Trait {   
  def innerMethod()   
  def logging()   
  def method = { 
    logging
    innerMethod
  }
}

class A extends Trait {
  def innerMethod() = println("A")
}

class B extends Trait {
  def innerMethod() = println("B")
}