【问题标题】: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
      }
      

      在此示例中,tathis 别名。它可用作A.this 的简写,当您需要从其他地方引用此代码时。

      因为ta(即这段代码)的类型是B,所以B的所有方法和成员数据都在范围内并且可以免费使用。这成为编译器将强制执行的契约:因为A 代码可以引用B 代码,所以A 不能在没有B 的情况下被实例化。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 2018-08-08
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        相关资源
        最近更新 更多