斯卡拉特征Haskell型和C++0X概念之间的区别是什么?
在下面的示例中,观察者声明一个抽象成员接收更新 观察者实际上是一个匿名类型或结构类型。
package observer trait Subject { type Observer = { def receiveUpdate(subject: Any) } private var observers = List[Observer]() def addObserver(observer:Observer) = observers ::= observer def notifyObservers = observers foreach (_.receiveUpdate(this)) }
所以它们只有两个有共同点,但不是很多,那就是概念和类型类。本文中已经对两者进行了比较: A comparison of C++ concepts and Haskell type classes