【发布时间】:2017-03-24 09:33:54
【问题描述】:
函数式程序员经常看不起命令式编程中使用的约定和方法,例如可变变量的使用、for 循环的使用、显式异常的创建。
但是,如果深入研究 Scala 的库,就会发现该语言的优雅功能实际上是由半命令式实现封装的。
例如,考虑在 TraversableLike 特征中实现forall。
def forall(p: A => Boolean): Boolean = {
var result = true
breakable {
for (x <- this)
if (!p(x)) { result = false; break }
}
result
}
很容易争辩说,所有函数式语言都是高级语言,并且实际上是建立在命令式基础上的,就像语言本身是使用命令式语言构建的一样。
但是,我的问题是,为了使代码库符合功能标准,应该在命令式和函数式样式之间画什么?
【问题讨论】:
-
你可以在任何你想要或需要的地方画线。
-
这将基于意见关闭,但事实上,快速跳出循环通常更容易以命令式风格实现。 FP、OOP、命令式……的混合是 Scala 的复杂之美
标签: scala functional-programming