什么=>表示Scala类定义的开头?

Joh*_*ood 24 scala class

问题的作者 用抽象类型交换类型参数=>在他的类定义的开头写了一个.例:

abstract class Thing { t => 
  type A 
  type G <: Group { type A = t.A } 
  val group: G 
} 
Run Code Online (Sandbox Code Playgroud)

什么t =>意思?

因为在Google&Co中很难找到,有人可以给我更多背景信息或提供链接,我可以在哪里找到有关这种语言结构的更多信息?

ayv*_*ngo 16

类本身的默认命名是this.你可以用tby 替换它t =>

如果您的类包含子类并且您需要访问封闭的自引用,这将非常有用.

如果没有t =>你的例子,你会写这样的东西:

abstract class Thing {
  type G <: Group { type A = this.A }
}
Run Code Online (Sandbox Code Playgroud)

Group { type A = this.A }是一个子类型,因此this将引用组专门化本身而不是事物对象.可能你没有得到你的意思.如果您需要访问Thing self reference,则应通过为其他名称指定自引用来解决名称冲突

abstract class Thing { another_this = >
  type G <: Group { type A = another_this.A}
}
Run Code Online (Sandbox Code Playgroud)