Я получил configurer
, поддерживающий стиль цепи, как так:цепи
val configurer = Configurer("init").propA("a").propB(3).propC("bla-bla")
это третья сторона Lib, что я не могу изменить.
И у меня
случай класс Config (Propa: Опция [String], propB: Option [Int], propC: Option [String])
Теперь мне нужно постройте мой configurer
с данным объектом config
, следует вызвать метод propX
, если соответствующее значение установлено в config
.
Каков наилучший способ сделать это функциональным способом?
Мне не нравится эта
val configurer = Configurer("init")
val withPropA = config.propA.map(configurer.propA).getOrElse(configure)
val withPropB = config.propB.map(configurer.propB).getOrElse(withPropA)
val withPropC = config.propC.map(configurer.propC).getOrElse(withPropB)
Просто чувствую, что должен быть элегантным способом.
Это дерьмовый API, просто оберните это в функцию 'fromConfig' в сопутствующем объекте' COnfigurer' и сделайте с ним :) – vptheron