为什么使用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(使用前将#替换为@)