如何在Scala中编写此配置逻辑?

Mic*_*ael 3 scala applicative

这是我上一个问题的后续行动

假设我使用以下逻辑(在准Java中)来获取配置参数MyParam:


String myParam = null

if ((myParam = getFromArgs("MyParam")) != null)
   return myParam

if ((myParam = getFromSystemProperties("MyParam")) != null)
   return myParam

if ((myParam = getFromUserConfigFile("MyParam")) != null)
   return myParam

... // and so on

if (myParam == null)
   error("No MyParam")

如何在Scala中编写此逻辑?是Applicative适用在这里吗?

xie*_*fei 8

List(getFromArgs _, getFromSystemProperties _, getFromUserConfigFile _).map{func=>
  Option(func("MyParam"))
}.reduce(_ orElse _).getOrElse(sys.error("No MyParam"))
Run Code Online (Sandbox Code Playgroud)

结帐scala选项cheatsheet.选项很强大.


Edm*_*984 5

如果你的问题只是语法问题,那么谢飞答案是准确的.

如果您真的在寻找灵活的配置,我建议您热烈关注Typesafe配置项目:https://github.com/typesafehub/config/