2
解析するフィッティングケースクラスは何ですか?解析タイプセーフの設定が
これをADT経由でどのように読み取ることができますか?彼らの例を見ると、いくつかのクラスが異なるフィールド数を持つクラス階層を構築する方法はわかりませんが、いくつかは継承できます。ここ
sealed trait Tree case class Branch(value: Int, left: Tree, right: Tree) extends Tree case object Leaf extends Tree
マイサンプル:
import at.tmobile.bigdata.utils.config.ConfigurationException
import com.typesafe.config.ConfigFactory
import configs.syntax._
val txt =
"""
|input {
| foo {
| bar = "a"
| baz = "b"
| type = "foo"
| }
|
| bar {
| bar = "a"
| baz = "c"
| other= "foo"
| type="bar"
| }
|}
""".stripMargin
val config = ConfigFactory.parseString(txt)
config
sealed trait Input{ def bar: String
def baz:String }
case class Foo(bar: String, baz: String) extends Input
case class Bar(bar:String, baz:String, other:String)extends Input
config.extract[Input].toEither match {
case Right(s) => s
case Left(l) =>
throw new ConfigurationException(
s"Failed to start. There is a problem with the configuration: " +
s"${l.messages.foreach(println)}"
)
}
はで失敗します。input
設定はいつもの例のように2
フィールド(txt
値で構成されます
No configuration setting found for key 'type'
残念ながら、これはもう少し複雑で、最初のレイヤ、つまり入力をいくつかの追加値としてスキップすることはできません。 –