“A类继承B类”是指Scala参考?

时间:2010-07-19 10:33:35

标签: scala

在Scala 2.8参考,第5.3.3节第69页(pdf中的77)中,出现以下段落:

  

假设特征D定义了一些方面   类型为x的实例C(即D)   基类C)。那么实际   Dx的超类型是复合词   由所有基础组成的类型   成功L(C)的{​​{1}}中的课程。

符号D的含义是什么(在原始文本中,它是象征性的书法大写L(C))?

短语“类...... 成功 \ell”是什么意思?我不熟悉这种符号。

2 个答案:

答案 0 :(得分:7)

底线是,L(C)由排序为链的所有基类(C的整个继承层次结构,包括特征)组成,顶部有AnyC } 在底部。 成功 D表示在链中更高 D

更长的解释是,我们想知道,对于每个类,它的“父” - 用于实现目的和一般清晰度(在C ++中,它是非常混乱的,其中允许无限多重继承)。在Java中它很简单 - 你只有一个直接的超类。但是,由于Scala中的mixin-class组合,它是多重继承的形式(来自一个超类+可能是几个特征),任何类的基类形成一个有向无环图。 L(C)是C的基类的线性化 - 从超类开始,添加特征(及其基类),使它们形成一个链,每个类都有自己的基类超越自己。您可以在the overview of Scala的第6部分中详细了解它。这是一个很好的,全面的功能概述。

答案 1 :(得分:2)

L(C)是class linearization。然后“成功”关注结果序列中的位置。线性化在the spec的第5.1.2节中定义。