我对scala非常陌生,我正在自学教程:http://www.cakesolutions.net/teamblogs/2013/08/02/akka-and-spray/
在某种程度上,它涉及到测试,它告诉我们可以通过创建一个结构类型来克服继承需求:
ActorSystem完全实现了核心特性。然而,我需要实现核心特性来满足CoreActors的自我类型声明. 我可以将Core定义为结构化类型,在这种情况下,我不必担心在这里实现Core。如果您想试用它,请删除特征核心{.},并将其替换为 package { type core ={ def system: ActorSystem }这里,Core类型是一个结构化类型,说明Core是包含系统的任何东西: ActorSystem成员。
我不明白--如果我不创建一个特性核心,我不能在CoreActors中扩展它--我想我错过了一些东西。结构类型的概念对我来说也是新的。
发布于 2013-10-25 22:23:52
结构类型不能扩展。它们不是用层次结构来描述类型,而是用它提供的方法来描述类型。
所以,如果你有
type Core = { def system: ActorSystem }这意味着,任何有一个名为system的方法不接受参数并返回一个ActoreSystem的类型也将是一个Core。
然而,Scala中的结构类型在某些方面是有限的。首先,它们不能是递归的(也就是说,Core可以出现在side Core的定义中),这使得它们变得无用,例如,对于算术运算符。
它们也没有效率,因为它们是通过反思来实施的。
https://stackoverflow.com/questions/19599998
复制相似问题