为什么对于 Scala 选项,使用 foreach
、map
、flatMap
等被认为比使用 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/