加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala特征与C概念之间的区别

发布时间:2020-12-16 09:05:00 所属栏目:安全 来源:网络整理
导读:Scala traits Haskell类型类和C 0x Concepts之间有什么区别? 就像下面这个例子中Observer声明一个抽象成员receiveUpdate一样 观察者实际上是“匿名”类型或结构类型. package observertrait Subject { type Observer = { def receiveUpdate(subject: Any) }
Scala traits Haskell类型类和C 0x Concepts之间有什么区别?

就像下面这个例子中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使得x是……”)以及为较少广告提供完全类型推断语言的ad-hoc多态的机制特别的方式.
>概念也用于参数多态的有界量化,并提供概念重载,这弥补了C中模板函数缺乏部分特化.它们最初设计用于处理C中的模板错误消息问题.
>特征是混合行为的机制,不使用多重继承.

因此,只有两个有共同点,但不是很多,即Concepts和Type-classes.本文中已经对两者进行了比较:A comparison of C++ concepts and Haskell type classes

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读