gpt4 book ai didi

scala - 与 '' this'' 没有类型/差异的显式自引用

转载 作者:行者123 更新时间:2023-12-03 03:39:53 27 4
gpt4 key购买 nike

我了解 explicitly typed self-references 的用途:

trait T {
self : T2 =>
...
}

在正文中,selfthis 的别名,但具有更精确的类型 T 和 T2

现在,我在代码中看到了这一点:

trait T {
self =>
...
}

即,没有附加类型信息的显式自引用。在这个配置中,是否存在 self 不只是 this 的别名的情况?

最佳答案

它是this的别名。

您的第一个示例对于确保特征已混合到适当的类型中很有用,并使这些方法可用。

当您的内部类存在命名冲突时,第二个示例非常有用,可以使外部作用域可见。例如:

trait U {
self =>
val name = "outer"
val b = new AnyRef {
val name = "inner"
println(name)
println(this.name)
println(self.name)
}
}

然后new AnyRef with U打印

inner
inner
outer

“self”不是一个特殊的关键字 - 您可以使用“bananas =>”或任何您喜欢的关键字,但它通常按惯例使用。

这种情况在 Swing 中经常出现,您在内部类(滚动 Pane 中的文本框等)上做了很多工作,这些内部类通常有许多与外部类同名的方法。

关于scala - 与 '' this'' 没有类型/差异的显式自引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com