У меня есть следующий метод:Есть ли способ переопределить и добавить некоторые импликации в метод?
class TestBase {
def base(value: Int) = println(value)
}
Теперь, я хотел, чтобы переопределить его и добавить некоторую функцию, выполняя побочный эффект, который предполагается ввести в сферу каждого абонента. Я имею в виду, что вызывающий может решить, какой побочный эффект добавить. Я пробовал вот так:
class TestDerived extends TestBase{
override def base(value: Int)(implicit ev : Int => Unit) = println("Overriden")
//Error, Method 'base' overrides nothing
}
Но этот код отказывается компилироваться. Я подозревал, но не знал, что если implicits
являются частью подписи метода. Итак, есть ли другой способ позволить вызывающему абоненту предоставить собственную версию функции побочного эффекта. Причина, по которой я не могу просто добавить неявный параметр в базовый класс, заключается в том, что я использую akka.Actor
, и я не могу изменить подпись akka.actor.receive: Receive
.
В Scala и Java, разные подписи означают разные методы, так как ваш метод имеет другую подпись, он не может переопределить другой метод. –
Просто интересно, если вы можете переопределить актер-приемник с неявным, как вы его назовете? вы отправляете сообщение актеру с подсказкой, а затем получаете вызывается самакой. –
@FatihDonmez Ну, я просто предоставил значение для импликации с импортом. Что не так? – user3663882