引用Chapter 1 of Programming in Scala:
...在Scala中,函数值是一个对象。函数类型是类 可以由子类继承。这看起来似乎不过是 学术上的精确,但它对可扩展性有深远的影响。在 事实上先前显示的演员概念不可能 在没有功能和对象统一的情况下实现。
我不太明白为什么作者说没有统一OO和函数式编程就无法实现actor概念。有人可以解释一下吗?
举个例子,这是一个实现校验和计算器服务的简单Scala actor:
actor {
var sum = 0
loop {
receive {
case Data(bytes) => sum += hash(bytes)
case GetSum(requester) => requester ! sum
}
}
}
答案 0 :(得分:1)
“我不太明白为什么作者说如果不统一OO和函数式编程就无法实现actor概念。”
作者在该引文中不说"Functional Programming"(尽管Scala确实在后面的章节中采用了许多这样的概念),而是......
..实际上,如果没有功能和对象的统一,就无法实现之前显示的actor概念。
这一点的主要含义是函数是First-Class,因此可以作为任何其他类型的值传递 - 这反过来使函数适用于回调,例如“反应”。
但是,显示的示例实际上并没有完全显示“函数和对象的统一”,即使它们在下面统一(即使模式匹配产生函数)。因此,报价应该更多地作为钓鱼线上的诱饵..
[Scala是一种在你身上成长的语言]