Я придумал эту схему, не могли бы упростить ее через объект компаньон мысли.
class Clazz
class ClazzFactory {
def apply = new Clazz
}
class Foo(factory: ClazzFactory) {
val foo: Clazz = factory.apply
}
Это очень раздражает, что ClazzFactory не может быть объектом, а не классом. Упрощенная версия:
class Clazz {
def apply() = new Clazz
}
class Foo(factory: Clazz) {
val foo: Clazz = factory.apply
}
Это требует, чтобы вызывающий использовать новое ключевое слово для того, чтобы обеспечить заводскую аргумент, который уже второстепенный достаточно раздражением по отношению к исходной задаче. Но Scala мог сделать этот сценарий более элегантным; Мне пришлось вернуться сюда, чтобы передать параметр типа, который я хотел бы создать, плюс ключевое слово new
. Может быть, есть лучший способ.
(мотивация заключалась в том, чтобы создать экземпляр этого типа много раз в пределах реального Foo
, вот почему это вообще не решение, иначе мой шаблон выше просто лишним).
Не могли бы вы обновить свой пример, чтобы имена соответствовали и имели смысл? – Clashsoft
Готово, извинения. Теперь мы можем удалить наш комментарий. – matanster