gpt4 book ai didi

scala - Scala trait 和 C++ 概念之间的区别

转载 作者:行者123 更新时间:2023-12-01 10:13:43 25 4
gpt4 key购买 nike

Scala traits Haskell 类型类和 C++0x 概念有什么区别?

就像下面这个例子,Observer 声明了一个抽象成员 receiveUpdate观察者实际上是一种“匿名”类型或结构类型。

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))
}

最佳答案

  • 概念不会出现在 C++0x 中,它们已在规范草案的最后几个版本中删除。
  • 类型类最初是为参数多态性的有界量化而设计的(通用约束,“forall x such that x is an...”)和一种为完全类型推断语言提供临时多态性的机制临时方式。
  • 概念还用于参数多态性的有界量化并提供概念重载,这弥补了 C++ 中模板函数部分特化的不足。它们最初设计用于处理 C++ 中的模板错误消息问题。
  • 特征是在不使用多重继承的情况下混合行为的机制。

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

关于scala - Scala trait 和 C++ 概念之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com