Я пытаюсь включить Pureconfig в свой вариант использования для типизированных конфигураций. Было успешно сопоставлено HOCON .conf с типами классов case. Однако, если мне нужно ограничить свои типы без побочных эффектов на стороне определения объекта (т.е. подавить по умолчанию apply () и copy ()), я использую следующий подход к определению для класса case:
sealed abstract case class someConfig(name:String)
object someConfig{
def apply(name:String):Option[someConfig]={
if(Option(name).isDefined && name.nonEmpty){
Some(new someConfig(name){})
} else {
None
}
}
}
Для поддержки типов Option [_] я рассматриваю возможность использования неявного ConfigReader. Этот подход, кажется, работает, и мне нужно немного больше адресовать ключи конфигурации для сопоставления объектов и создания экземпляров.
Примеры, которые я до сих пор искал, похоже, не соответствуют этой потребности. Однако вы можете увидеть использование Option [_] для членов объекта. Пытался пройтись по образцам кода в репозитории Pureconfig git.
Может ли кто-нибудь предложить подход, в котором может поддерживаться опция [T], где T - составной настраиваемый тип? И мне не нужно иметь дело с именем переменной-члена для настройки сопоставления клавиш и т.д., то есть избегать необходимого шаблона!