加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 可堆叠的特征模式可以与单例对象一起使用吗?

发布时间:2020-12-16 08:58:31 所属栏目:安全 来源:网络整理
导读:我想将 stackable trait pattern与单例对象一起使用,但我似乎无法找到如何使编译器满意: abstract class Pr { def pr()}trait PrePostPr extends Pr { abstract override def pr() { println("prepr") super.pr() println("postpr") }}object Foo extends P
我想将 stackable trait pattern与单例对象一起使用,但我似乎无法找到如何使编译器满意:

abstract class Pr {
  def pr()
}

trait PrePostPr extends Pr {
  abstract override def pr() {
    println("prepr")
    super.pr()
    println("postpr")
  }
}

object Foo extends Pr with PrePostPr {
  def pr() = println("Foo")
}

尝试在repl中对此进行评估会产生以下错误:

<console>:10: error: overriding method pr in trait PrePostPr of type ()Unit;
 method pr needs `override' modifier
         def pr() = println("Foo")

解决方法

它可以,但像这样:

abstract class Pr {
  def pr()
}

trait PrePostPr extends Pr {
  abstract override def pr() {
    println("prepr")
    super.pr()
    println("postpr")
  }
}

class ImplPr extends Pr {
  def pr() = println("Foo")
}

object Foo extends ImplPr with PrePostPr

实现必须存在于其中一个超类/超级表中.抽象修改特征必须在继承列表中具有实现的类/特征之后.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读