Scala:self =>这是什么意思?

时间:2016-06-22 16:49:34

标签: scala

当我查看scala.collection.TraversableLike的代码时,我发现它始于self =>

这是什么意思?

2 个答案:

答案 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