【发布时间】:2013-08-15 10:24:14
【问题描述】:
我要转Typesafe配置
root {
mainA = "test"
submodule {
paramA = "value"
paramB = "value"
}
anotherModule {
zoo = 1
sub {
z = test
}
}
}
进入某种 Scala 配置对象,例如
object config {
val cfg = ConfigFactory.load()
val root = "root"
lazy val mainA = cfg.getString("root.mainA")
object submodule {
lazy val paramA = cfg.getString("root.submodule.paramA","value")
lazy val paramB = cfg.getString("root.submodule.paramB","value")
}
object anotherModule {
lazy val zoo = cfg.getInt("root.anotherModule.zoo",1)
object sub {
lazy val z = cfg.getString("root.anotherModule.sub.z","test")
}
}
}
所以一般我会有一些“模板”配置文件,并生成“通用” 具有一些默认值的配置对象。
在 Haskell 中,我会使用 Template Haskell 来生成和编译代码, 在 Scala 中我能做些什么呢?
【问题讨论】:
-
您可以使用 Scala 2.10 的
def宏来实现类型提供程序之类的东西,但这有点棘手(有关示例和讨论,请参阅我的博客文章 here 和 here)。一旦我们有了macro annotations,这将变得容易得多。
标签: scala configuration code-generation typesafe