Squeak / Pharo Trait和Newspeak Mixin有什么区别?

所以Squeak / Pharo支持Traits和Newspeak有Mixins。有什么不同?特质没有instVars但是Mixins有吗?     
已邀请:
为了进行良好的比较,并推断为什么特征是首选,你可以查看特征论文(pdf)。 从本质上讲,这就是Lukas Renggli所说的: Traits成员组成一个类,不更改其继承层次结构。冲突必须由特征的用户明确解决。 Mixins被线性化为目标类的继承层次结构。如果存在冲突成员,则声明它们的顺序决定了哪个成员被调用。这是脆弱的,因为它隐含地定义了合成的行为,并且类作者必须意识到潜在的冲突以及它们将如何影响结果类。 由于mixins被线性化,它们不会遭受多重继承的臭名昭着的“钻石问题”。因此,它们堆积的脆弱性是另一个问题,我将其称为“红宝石问题”,以保持宝石的比喻。由于与驼鹿有关的一些奇怪的原因,珍珠并没有描述问题以及红宝石。     
特征是使用组合规则组成的。冲突必须手动解决,不能发生特征意外覆盖具有相同名称的另一个方法。 Mixins由顺序组成,因此具有类似于多重继承的脆弱性问题。     
在Newspeak中,所有课程都是mixins。以下是Gilad Bracha在Newspeak论坛中回答类似问题的一些片段:   Mixins不是Newspeak的功能   本身。也就是说,我们没有设计   语言说,好的,现在我们将添加   混入。 Mixins会自动脱落   从类嵌套和基于消息   语义。也就是说,如果你有   虚拟课,你有mixins   除非你真的禁止他们。 ...      特征试图解决感知问题   mixins的问题。         几乎没有真正的经验表明这些   感知问题是真实的。   特征被限制为无国籍。这简化了事情,   但不处理所有的情况   利益。事实上,现在有   试图添加的研究论文   陈述特征。         特征完全归入更多   一般模型,我设计了很多   几年前在我的博士论文(可用   离开我的网站,如果你真的想   深挖)。   ...   我想研究一下我们的意愿   将这些组合器纳入其中   新话。 ...     

要回复问题请先登录注册