当我查看scala.collection.TraversableLike
的代码时,我发现它始于self =>
这是什么意思?
答案 0 :(得分:4)
这通常用作“此”变量的别名。为什么你甚至需要这个?考虑一个简单的例子:
class A{
self=>
def generate = 5
class B{
def generate:Int = {
self.generate+5
}
}
def o = (new B).generate
}
val a = new A
a.o
如果您将“自我”更改为“此”,您将获得StackOverflowException。为什么?因为嵌套类中的“ this.generate ”是指类 B 的方法“生成”。因此,为了访问A类方法“生成”,我们为“this”创建了一个别名。 你也可以写:
A.this.generate
代替。它也有效。
您可能也对本文感兴趣。 http://www.markthomas.info/blog/92
答案 1 :(得分:3)
这是一种名为self-type annotation
的东西,允许两件事:
this
(在嵌套类或特征中很有用,this
可以让你访问内部类,self
可以访问外部类, this
的其他要求(它与...非常相似)
继承然后,您可以看到示例和差异here)