如何使用scala trait与`self`引用?
发布时间:2020-12-16 09:48:36 所属栏目:安全 来源:网络整理
导读:我看到一些代码编写trait如下: trait SelfAware { self: Self = ....}class Selfval s = new Self with SelfAware // this is okprintln(s.self) // error happenedclass Xnew X with SelfAware // error happened here 我想知道为什么错误发生和如何使用tr
我看到一些代码编写trait如下:
trait SelfAware { self: Self => .... } class Self val s = new Self with SelfAware // this is ok println(s.self) // error happened class X new X with SelfAware // error happened here 我想知道为什么错误发生和如何使用trait这种方式? 解决方法
发生错误是因为您已将此引用(您称为self)的类型限制为类型Self。当你说self with SelfAware,这是确定,因为该对象是类型自己像你问。但是当你用SelfAware说新的X时,没有证据表明X以任何方式是Self的子类型。
在你的新对象类型X与SelfAware,它的自我成员的类型是什么?嗯,它不会是Self类型,但是类型X.但是你已经定义了traature SelfAware,所以self必须是Self类型,所以你得到一个类型错误。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Spark/Scala实现推荐系统中的相似度算法(欧几里得距离、皮
- haskell – 如何使用bash测试cabal
- scala – 如何将show运算符的输出读回数据集?
- scala – 如何在Play 2.0.1中使用TestServer运行多个功能规
- 相同的.vimrc,两台不同的电脑
- 关键路径(AOE)---《数据结构》严蔚敏
- 在webpack开发中利用bootstrap4中的字体图标
- vim – 如何在与我正在编辑的文件相同的驱动器上打开NERDTr
- Angular2 Dependency Injection
- angularjs事件指令--ngClick、ngDbclick、ngCut、ngChange、