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

2024-06-21

为什么使用foreach, map, flatMap等被认为比使用更好get对于 Scala 选项?如果我使用isEmpty我可以打电话get安全。


好吧,这又回到了“告诉,不要问”。考虑这两行:

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

在第一种情况下,你正在向内看opt然后根据你所看到的做出反应。在第二种情况下,你只是告诉opt你想做的事,让它来处理。

第一个案例了解太多Option,复制其内部逻辑,很脆弱并且容易出错(如果编写不正确,它可能会导致运行时错误,而不是编译时错误)。

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

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

With if,事情开始变得很快混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Scala 选项的 foreach 比 get 更好? 的相关文章

随机推荐