名为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 咦?这是这个? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |