【问题标题】:What can I write after self reference arrow?自引用箭头后我可以写什么?
【发布时间】:2016-10-09 20:14:07
【问题描述】:
我明白 self 类型的结果是什么
trait SpellChecker {
self: RandomAccessSeq[char] =>
...
}
来自http://www.markthomas.info/blog/92
据我了解,它说“从此特征实例化的对象也是RandomAccessSeq[char] 类型”。对吗?
我的问题:=> 之后我可以写什么,这是什么意思?我注意到在=> 之后编写AnyRef 时没有出现编译器错误。
【问题讨论】:
标签:
scala
traits
self-reference
【解决方案1】:
我的问题:=>之后我能写什么
任何东西。
这是什么意思?
表示自类型注解的结束。之后是正常的 trait body,就好像 self-type 注释不存在一样。
【解决方案2】:
trait A { ta: B =>
// code
}
在此示例中,ta 是 this 别名。它可用作A.this 的简写,当您需要从其他地方引用此代码时。
因为ta(即这段代码)的类型是B,所以B的所有方法和成员数据都在范围内并且可以免费使用。这成为编译器将强制执行的契约:因为A 代码可以引用B 代码,所以A 不能在没有B 的情况下被实例化。