Насколько я понимаю, Scala создает анонимный класс, если я создаю класс с помощью ключевого слова new
и следую за именем класса с помощью конструктора:
class MyClass {
def doStuff() {
// ...
}
}
val mc = new MyClass {
doStuff()
}
Приятно то, что весь код в конструкторе находится в области видимости нового объекта.
Есть ли способ воспроизвести этот синтаксис, когда класс создается методом фабрики, а не ключевым словом new
? то есть заставить работать следующий код:
val mf = new MyFactory
val mc = mf.MyClass {
doStuff()
}
Я не могу найти способ сделать это, но в Scala так много всего, что это может быть довольно легко!
Используя import
, как предложено @Ricky ниже, я могу получить:
val mf = MyFactory;
val mc = mf.MyClass
{
import mc._
doStuff()
}
(где необходима пустая строка перед блоком), но этот блок кода не является конструктором.