Есть ли способ переопределить неявный параметр, используемый функциями, вызываемыми внутри блока структуры управления? У меня есть код, который выглядит следующим образом:
def g()(implicit y: Int) {
// do stuff with y
}
class A {
implicit val x: Int = 3
def f() {
overrideImplicit(...) { // <-- overrideImplicit() is permitted to do anything it wants make it so that g() sees a different implicit val, as long as we do not explicitly declare "implicit" here (though it could happen within the method/function)
g() // somehow sees the new implicit as opposed to x
}
}
}
Насколько я понимаю, даже если overrideImplicit () устанавливает неявное внутри себя, g () все равно увидит тот, который находился в области действия в тот момент, который объявлен в A. Я понимаю, что один из способов получить желаемое поведение - явно указать «неявный val x2: Int = 4» внутри f (), но я хочу избежать этого и скрыть тот факт, что используются имплициты. Есть какой-либо способ сделать это? Спасибо.