Не знаю, если это хорошая идея
val factor = 3
// all this Wrap stuff is so that we don't have an implicit Int
class Wrap(var inner: Int)
implicit val tmp = new Wrap(factor + 1)
def multiplier(i: Int)(implicit w: Wrap) = { w.inner -= 1; w.inner * i }
и замените w.inner -= 1
на другие функции, если хотите.Или без последствий
class Wrap(var inner: Int)
var tmp = new Wrap(factor + 1)
def base(i: Int)(w: Wrap) = { w.inner -= 1; i * w.inner }
def multiplier(i: Int) = base(i)(tmp)
оба делают
multiplier(3) // 9
multiplier(3) // 6
multiplier(3) // 3
Оба способа требуют создания var.Не понимаю, как еще можно это сделать, не усложняя.