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

名为Scala的自我类型仍然会影响“这个”吗?

发布时间:2020-12-16 10:07:21 所属栏目:安全 来源:网络整理
导读:通过 these posts工作让我觉得我理解自我类型,至少在某种程度上. 所以我创建了一个按预期失败的示例: scala trait A { val v = "a" }defined trait Ascala trait B { this :A = ; var v = "" ; this.v = "b" }console:6: error: reassignment to val trait
通过 these posts工作让我觉得我理解自我类型,至少在某种程度上.

所以我创建了一个按预期失败的示例:

scala> trait A { val v = "a" }
defined trait A

scala> trait B { this :A => ; var v = "" ; this.v = "b" }
<console>:6: error: reassignment to val
       trait B { this :A => ; var v = "" ; this.v = "b" }
                                                  ^

自我类型的“这个”阴影B的“这个” – 它看起来很奇怪,但有道理.

那么,给自我类型赋予不同的名称似乎是明智的.我做到了这一点并且相当惊讶:

scala> trait C { a :A => ; var v = "" ; this.v = "c" }
<console>:6: error: reassignment to val
       trait C { a :A => ; var v = "" ; this.v = "c" }
                                               ^

它还在阴影中???

更改’local’变量的名称让事情编译,这是有道理的:

scala> trait D { a :A => ; var w = "" ; this.w = a.v }
defined trait D

(并且可以选择使用自我类型名称来阐明要使用的“v”.)

好的.这意味着以下应该失败?

scala> trait E { this :A => ; var w = "" ; this.w = this.v }
defined trait E

咦?这是这个?

(编辑:李大同)

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

    推荐文章
      热点阅读