Scala outer =>语法

Sta*_*tas 5 scala

可能重复:
"outer =>"究竟是什么意思?

在哪里可以找到有关的信息

trait After extends Context { outer => xxx
//...
}
Run Code Online (Sandbox Code Playgroud)

什么意思外面=>

dre*_*xin 14

这是一种自我类型.您还可以添加类型注释,以强制类,将您的特征扩展为特定类型.但是没有类型它只是一个引用this(并被称为自引用),所以你可以在内部类等中使用它.例如:

class MyOuter { outer =>
  // this == outer
  class MyInner {
    // this != outer
    def creator = outer
  }
}
Run Code Online (Sandbox Code Playgroud)

我提到的其他用法可以用于向现有类添加特殊行为:

class MyClass {
  val foo = "foo"
}

trait MyClassExtension { this: MyClass =>
  def fooExtended(s: String) = foo + s
}

scala> val x = new MyClass with MyClassExtension
x: MyClass with MyClassExtension = $anon$1@5243618

scala> x.fooExtended("bar")
res3: java.lang.String = foobar
Run Code Online (Sandbox Code Playgroud)

这里的this: MyClass =>手段,MyClassExtension只能混合到一个实例或子类中MyClass.

scala> class OtherClass
defined class OtherClass

scala> val x = new OtherClass with MyClassExtension
<console>:11: error: illegal inheritance;
 self-type OtherClass with MyClassExtension does not conform to MyClassExtension's selftype MyClassExtension with MyClass
       val x = new OtherClass with MyClassExtension
Run Code Online (Sandbox Code Playgroud)