首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么自我而不是自我引用呢?

为什么自我而不是自我引用呢?
EN

Stack Overflow用户
提问于 2016-10-09 20:11:33
回答 2查看 333关注 0票数 0

我理解自我类型的结果是什么

代码语言:javascript
运行
复制
trait SpellChecker {
  self: RandomAccessSeq[char] =>
  ...
}

来自http://www.markthomas.info/blog/92

但是我不明白为什么在这里使用self而不是this更好.!?另外,如果我编写asfd而不是self,我也不会得到编译器错误.所以我不太确定“自我”是什么意思。我看不出以后在这种特性的方法中像对象一样使用self是不可能的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-09 20:35:52

self是SpellChecker实例的别名。如果您有嵌套结构(如类),这是非常有用的。考虑到这一点:

代码语言:javascript
运行
复制
trait Foo {
  self =>

  override def toString : String = "Foo here"

  class Bar {
    def print() : Unit = {
      println(s"this = $this")
      println(s"self = $self")
    }
    override def toString : String = "Bar here"
  }
}

val foo = new Foo {}
val bar = new foo.Bar()
bar.print()

产出:

代码语言:javascript
运行
复制
this = Bar here 
self = Foo here

因此,如果要引用外部元素,可以使用别名。使用this意味着没有别名,所以this : Example =>的意思是“我不需要这个别名,我只想确保它与示例混合在一起”。你可以给你的别名起名字,不管你喜欢什么,asfdiLikeFries一样好。self只是某种约定。

票数 3
EN

Stack Overflow用户

发布于 2016-10-09 20:35:45

在这种情况下,重命名this是没有意义的。当您重命名外部this并在嵌套的模板/对象中访问它时,这在嵌套的情况下更有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39948063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档