Scala变量作用域问题
我有一个 scala 语法问题 - 假设我有一个简单的依赖模式构造,如下所示
trait Master {
val foobar
object SubObject extends SubObject {
foobar = foobar
}
}
trait SubObject {
val foobar
}
显然,这不会编译,因为引用 富巴 = 富巴 是模棱两可的。
如何指定表达式的 RHS 应引用 Master 的 foobar 变量?我应该了解“this”或“self”的某种特殊用法吗?
I have a scala syntax question - say I have a simple dependency pattern construct like the following
trait Master {
val foobar
object SubObject extends SubObject {
foobar = foobar
}
}
trait SubObject {
val foobar
}
Obviously, this will not compile, since the reference
foobar = foobar
is ambiguous.
How do I specify that the RHS of the expression should reference Master's foobar variable? Is there some sort of special usage of 'this' or 'self' that I should know about?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 Master.this 限定符来专门引用外部作用域,如下所示:
You can use the
Master.this
qualifier to specifically reference the outer scope, something like the following:我相信最简单的方法是使用自我类型定义。除了一堆很酷的类型理论效果之外,您还可以使用自我类型为“this”创建别名。 (没有测试过这个)
I believe the easiest way is to use a self-type definition. In addition to a bunch of cool type-theoretic effects, you can use a self-type to create an alias for "this". (Haven't tested this)