Scala 结构类型而不是特征

Scala 结构类型而不是特征,scala,Scala,我是scala的新手,我正在通过一个教程来学习: 在某种程度上,它涉及到测试,它告诉我们可以通过创建结构类型来克服继承要求: ActorSystem完全实现了核心特性。然而,我需要 实现核心特性以满足 核心参与者 我可以将核心定义为结构类型,在这种情况下,我会 不必担心在这里实现核心。如果你想试试的话 out,移除trait核心{…},并将其替换为 包对象核心{type core={def system:ActorSystem} 在这里,核心类型是一种结构类型,也就是说核心是 包含系统的任何内容

我是scala的新手,我正在通过一个教程来学习:

在某种程度上,它涉及到测试,它告诉我们可以通过创建结构类型来克服继承要求:

ActorSystem完全实现了核心特性。然而,我需要 实现核心特性以满足 核心参与者

我可以将核心定义为结构类型,在这种情况下,我会 不必担心在这里实现核心。如果你想试试的话 out,移除trait核心{…},并将其替换为

包对象核心{type core={def system:ActorSystem} 在这里,核心类型是一种结构类型,也就是说核心是 包含系统的任何内容:ActorSystem成员


我不明白这一点——如果我不创造一个特质核心,我就不能从核心演员中延伸出来——我想我错过了一些东西。结构类型的概念对我来说也是新的

无法扩展结构类型。它们不是用层次结构来描述类型,而是用它提供的方法来描述类型

那么,如果你有

type Core = { def system: ActorSystem }
这意味着,任何类型的方法名为
system
,它不接受任何参数并返回
ActoreSystem
,也将成为
核心

然而,Scala中的结构类型在某些方面受到限制。首先,它们不能是递归的(也就是说,
Core
可能出现在side
Core
的定义中),这使得它们毫无用处,例如,对于算术运算符之类的东西


它们也没有效率,因为它们是通过反射实现的。

结构类型不能扩展。它们不是用层次结构来描述类型,而是用它提供的方法来描述类型

那么,如果你有

type Core = { def system: ActorSystem }
这意味着,任何类型的方法名为
system
,它不接受任何参数并返回
ActoreSystem
,也将成为
核心

然而,Scala中的结构类型在某些方面受到限制。首先,它们不能是递归的(也就是说,
Core
可能出现在side
Core
的定义中),这使得它们毫无用处,例如,对于算术运算符之类的东西


它们也没有效率,因为它们是通过反射实现的。

这是否意味着“核心”也必须以任何方式定义?所以我需要一个特质核心?教程说我可以用结构类型替换特征。@DanielKhan不,你不需要将
Core
定义为特征。这是否意味着也必须定义“Core”?所以我需要一个特质核心?教程说我可以用结构类型替换trait。@DanielKhan不,您不需要将
Core
定义为trait。