【问题标题】:Why does the play configuration return an option为什么播放配置返回一个选项
【发布时间】:2017-01-21 21:31:22
【问题描述】:

我使用的是类型安全配置,我注意到如果我调用 getString 它不会返回选项。

使用类型安全配置的播放配置总是返回选项。

这只是为了更像scala吗?

另外,是否可以使用 play 的配置来做到这一点:

val c = config.atPath("myapp-prefix")

c.getString("some-key")

我喜欢使用类型安全配置,我可以跳转到我的配置中的特定部分并从那里开始引用所有内容。

因为我只想让我的应用在没有正确加载配置的情况下崩溃,所以我不需要处理选项。

【问题讨论】:

  • 如果找不到配置,则应用的逻辑留给实现(例如在某处返回硬编码的默认参数),在您想要崩溃的情况下(您只需执行 .get ),在其他情况下,您可能不想崩溃。

标签: scala playframework typesafe-config


【解决方案1】:

如果您查看 Play 的 Configuration 类,您会发现它只是类型安全配置之上的一个薄层,用于检查键是否存在并返回选项而不是异常。

这是避免异常的 scala 方式,并允许您为配置提供合理的默认值。

如果您查看scaladoc,就会发现有一个underlying 字段可让您访问类型安全的配置对象。

如果您想让您的应用程序在配置错误的情况下“崩溃”,请使用那个。

否则,您还可以使用 for comprehension 来检索您的配置并在缺少键的情况下返回错误消息;类似:

for {
  subConfig <- config.getConfig("myKey")
  cfg1 <- subConfig.getString("k1")
  cfg2 <- subConfig.getString("k2")     
} yield {
  ... insert here the code using cfg1 and cfg2 ...
}

如果缺少某个键,则用于理解的键将返回一个 None 值。

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 2014-12-23
    • 1970-01-01
    • 2013-11-25
    • 2020-04-05
    • 2018-11-04
    • 2017-10-04
    • 2017-03-25
    • 2017-01-24
    相关资源
    最近更新 更多