加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用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类型,所以你得到一个类型错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读