代码之家  ›  专栏  ›  技术社区  ›  skyde

Scala特质与C++概念的差异

  •  3
  • skyde  · 技术社区  · 14 年前

    斯卡拉特征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))
    }
    
    1 回复  |  直到 12 年前
        1
  •  7
  •   snk_kid    14 年前
    • 概念没有进入C++ 0x,它们已经在草案规范的最后几个版本中被移除。
    • 概念还用于参数多态性的有界量化,并提供概念重载,这弥补了 部分的 专业化 模板函数的 在C++中。它们最初设计用来处理C++中的模板错误消息问题。
    • 特征是在不使用多重继承的情况下混合行为的机制。

    所以它们只有两个有共同点,但不是很多,那就是概念和类型类。本文中已经对两者进行了比较: A comparison of C++ concepts and Haskell type classes