当我第一次开始研究 Scala 时,我喜欢用于理解的外观。它们看起来有点像我在 Java 5 中习惯使用的 foreach 循环,但有功能限制和很多优美的语法。
但是当我吸收了 Scala 风格时,我发现每次我可以使用压缩时,我都在使用map
, flatMap
, filter
, reduce
andforeach
代替。这样,代码的意图对我来说似乎更清楚,潜在的隐藏惊喜更少,而且它们通常也是更短的代码。
据我所知,无论如何,理解总是被编译成这些方法,所以我想知道:它们实际上是为了什么?我是否错过了一些功能上的更新(这不是第一次)?理解是否能做其他功能不能做的事情,或者至少会更笨拙?它们是否在特定用例下大放异彩?真的只是个人口味的问题吗?