scala - 为什么 Scala 选项的 foreach 比 get 更好?

标签 scala scala-option

为什么对于 Scala 选项,使用 foreachmapflatMap 等被认为比使用 get 更好?如果我使用isEmpty,我可以安全地调用get

最佳答案

嗯,这有点回到“告诉,不要问”。考虑这两行:

if (opt.isDefined) println(opt.get)
// versus
opt foreach println

在第一种情况下,您正在查看 opt 内部,然后根据您所看到的内容使用react。在第二种情况下,您只需告诉 opt 您想要做什么,然后让它处理它。

第一种情况对 Option 了解太多,复制其内部逻辑,脆弱且容易出错(如果编写,它可能会导致运行时错误,而不是编译时错误错误)。

此外,它不可组合。如果您有三个选项,则只需一个理解即可解决它们:

for {
  op1 <- opt1
  op2 <- opt2
  op3 <- opt3
} println(op1+op2+op3)

使用if,事情很快就会变得困惑。

关于scala - 为什么 Scala 选项的 foreach 比 get 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819373/

相关文章:

java - 哪个是可扩展的?与 REST 服务对话的简单 CRUD Web 应用程序与 Web 应用程序

java - Scala 中的密封特征类转换

scala - 用于从两个选项中获取一个选项并在两个选项可用时抛出异常的惯用 scala

Scala:具有两个或多个选项的映射

scala 新手在使用 Option 时遇到问题,三元运算符的等价物是什么

java - Json.obj Scala,字符串连接 : Compilation error

scala - PlayFramework FakeRequest 返回 400 错误

scala - 如何将 scala 中的序列转换/包装为 Option[Seq],以便如果列表为空,则 Option 为 None

scala - 将 Either[A, B] 转换为 Option[A],其中 Left 变为 Some

scala - Selenium 、规范和 Scala