Пожалуйста, рассмотрите этот код:
trait A {
def a : Int
}
def f ( a : Int ) = {
def a0 = a
new A {
def a = a0
}
}
Проблема вполне очевидна: def a0 = a
— это типичный надоедливый шаблонный код, и ситуация только ухудшается, когда вводится больше параметров.
Мне интересно, можно ли как-то получить прямую ссылку на переменную a
внешней области видимости внутри объявления экземпляра типажа и таким образом избавиться от промежуточного a0
.
Имейте в виду, что изменение имени входного параметра функции не допускается, так как изменяется свойство.