我们应该在特质中始终使用`override`吗?

扬·莫桑(Yann Moisan)

我们是否应该始终使用override“特质”来抢先解决钻石继承问题?

让我们看一个例子来说明这一点:

trait S { def get : String }
trait A extends S { override def get = "A" }
trait B extends S { override def get = "B" }
class C extends A with B

没有override,则以下内容不会编译。

加布里埃·彼得罗内拉

使用override将使其编译,但是真正的问题是:您要实现什么?

在scala中,要扩展的特征已线性化。这意味着

class C extends A with B
new C().get

将产生 "B"

class C extends B with A
new C().get

将产生"A"

那你期望什么?一般来说,根据继承的顺序来解决钻石问题似乎是一个糟糕的设计选择(尽管该语言功能有合理的用途,例如可堆叠的特征模式)

因此,回到原始问题,您是否应该始终使用覆盖?不,您只应该在继承层次结构中避免使用菱形。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我应该在SQLAlchemy中始终使用'implicit_returning':False吗?

来自分类Dev

我应该使用“自然ID”创建实体还是应该在每个实体中始终使用Long作为ID

来自分类Dev

我们应该在Android的LayoutView或ImageView中设置背景吗?

来自分类Dev

我们还应该在Golang中关闭DB的.Prepare()吗?

来自分类Dev

AngularJS-我们应该在服务中包装$ http方法吗

来自分类Dev

AngularJS-我们应该在服务中包装$ http方法吗

来自分类Dev

我们应该在函数中强制转换JQuery参数吗?

来自分类Dev

我们应该在基类中“ super()”吗?

来自分类Dev

我们应该在观察者模式中使用WeakReference吗?

来自分类Dev

我们应该在竞争性编程中使用cin.ignore()吗?

来自分类Dev

我们应该在OkHttp中使用Google的安全提供程序吗?

来自分类Dev

我们应该在AngularJS中使用jQuery吗?

来自分类Dev

我们应该在Rails Factory中使用Faker吗?

来自分类Dev

我们应该在C ++中使用exit吗?

来自分类Dev

我们应该在PHP中使用“ --->”之类的对象范围吗?

来自分类Dev

HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

来自分类Dev

我们应该在 sql server 的更新查询中使用 alise 名称吗?

来自分类Dev

Xcode中的Storyboard参考,我们应该在哪里使用它?

来自分类Dev

有充分的理由我们不应该始终使用Google API SDK吗?

来自分类Dev

即使表中没有页脚,我们也应该在表中包括表脚元素吗?

来自分类Dev

我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

来自分类Dev

我们应该还是不应该在Javascript主函数中的函数声明后使用分号?

来自分类Dev

我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

来自分类Dev

我们应该在neo4jphp中更新节点后更新索引吗?

来自分类Dev

我们应该在另一个类中传递注入的对象吗

来自分类Dev

为了性能,我们应该在 ES6 类的原型中包含方法吗?

来自分类Dev

在这种情况下,我们应该在所有地方都使用noexcept吗?

来自分类Dev

我们可以在同一个 div 中使用 row 和 col-md-12 吗?还是应该在父子 div 中?

来自分类Dev

我们应该在不同的调用之间重用cublasHandle_t吗?

Related 相关文章

  1. 1

    我应该在SQLAlchemy中始终使用'implicit_returning':False吗?

  2. 2

    我应该使用“自然ID”创建实体还是应该在每个实体中始终使用Long作为ID

  3. 3

    我们应该在Android的LayoutView或ImageView中设置背景吗?

  4. 4

    我们还应该在Golang中关闭DB的.Prepare()吗?

  5. 5

    AngularJS-我们应该在服务中包装$ http方法吗

  6. 6

    AngularJS-我们应该在服务中包装$ http方法吗

  7. 7

    我们应该在函数中强制转换JQuery参数吗?

  8. 8

    我们应该在基类中“ super()”吗?

  9. 9

    我们应该在观察者模式中使用WeakReference吗?

  10. 10

    我们应该在竞争性编程中使用cin.ignore()吗?

  11. 11

    我们应该在OkHttp中使用Google的安全提供程序吗?

  12. 12

    我们应该在AngularJS中使用jQuery吗?

  13. 13

    我们应该在Rails Factory中使用Faker吗?

  14. 14

    我们应该在C ++中使用exit吗?

  15. 15

    我们应该在PHP中使用“ --->”之类的对象范围吗?

  16. 16

    HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

  17. 17

    我们应该在 sql server 的更新查询中使用 alise 名称吗?

  18. 18

    Xcode中的Storyboard参考,我们应该在哪里使用它?

  19. 19

    有充分的理由我们不应该始终使用Google API SDK吗?

  20. 20

    即使表中没有页脚,我们也应该在表中包括表脚元素吗?

  21. 21

    我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

  22. 22

    我们应该还是不应该在Javascript主函数中的函数声明后使用分号?

  23. 23

    我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

  24. 24

    我们应该在neo4jphp中更新节点后更新索引吗?

  25. 25

    我们应该在另一个类中传递注入的对象吗

  26. 26

    为了性能,我们应该在 ES6 类的原型中包含方法吗?

  27. 27

    在这种情况下,我们应该在所有地方都使用noexcept吗?

  28. 28

    我们可以在同一个 div 中使用 row 和 col-md-12 吗?还是应该在父子 div 中?

  29. 29

    我们应该在不同的调用之间重用cublasHandle_t吗?

热门标签

归档