Вот как вы могли бы обойтись без помощи метода apply
плюс объект-компаньон
trait SomeTrait {
val param:String
}
class A {
def func(param:String):SomeTrait = ((p:String) => new SomeTrait { val param = p })(param)
}
Я только что представил анонимную функцию инкапсуляции / абстрагирования для параметра, которую я назвал.
Результат получился более лаконичным и читабельным