首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构类型而不是特征

结构类型而不是特征
EN

Stack Overflow用户
提问于 2013-10-25 21:51:56
回答 1查看 375关注 0票数 0

我对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中扩展它--我想我错过了一些东西。结构类型的概念对我来说也是新的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-25 22:23:52

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

所以,如果你有

代码语言:javascript
复制
type Core = { def system: ActorSystem }

这意味着,任何有一个名为system的方法不接受参数并返回一个ActoreSystem的类型也将是一个Core

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

它们也没有效率,因为它们是通过反思来实施的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19599998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档