为什么播放配置return一个选项

Why does the play configuration return an option

我正在使用类型安全配置,我注意到如果我调用 getString 它不会 return 一个选项。

始终使用类型安全配置的播放配置 returns 选项。

这只是为了更像 scala 吗?

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

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

c.getString("some-key")

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

因为我只想让我的应用程序在未正确加载配置时崩溃,所以我不需要处理选项。

如果您查看 Play 的配置 class,您会发现它只是类型安全配置之上的一个薄层,用于检查密钥是否存在并且 return 是一个选项而不是异常.

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

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

如果你想让你的应用程序"crash"在配置错误的情况下,就使用那个。

否则,您还可以使用 for comprehension 来检索您的配置,并 return 在丢失密钥的情况下显示错误消息;类似于:

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

如果缺少一个键,那么为了理解将 return 你一个 None 值。