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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |