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

在Scala中,我可以覆盖包含列表的具体字段并在子类中附加一些内容

发布时间:2020-12-16 18:44:36 所属栏目:安全 来源:网络整理
导读:这是我所拥有的类的简化: trait RequiredThings { val requiredThings: Seq[String]}class SimpleCalculator with RequiredThings { val requiredThings = List("a","b")}class ComplicatedCalculator extends SimpleCalculator with RequiredThings { self
这是我所拥有的类的简化:

trait RequiredThings {
  val requiredThings: Seq[String]
}

class SimpleCalculator with RequiredThings {
  val requiredThings = List("a","b")
}

class ComplicatedCalculator extends SimpleCalculator with RequiredThings {
  self: SimpleCalculator =>
  override val requiredThings:List[String] = List("c") ::: self.requiredThings
}

在这个版本中,我使用的是自我类型的注释,但我不是完全肯定的,这是要走的路.我想我可以通过将requiredThings转换为一个方法来实现它,但我想把它作为一个字段来尝试.

最终解决方案

trait RequiredThings {
  def requiredThings: Seq[String]
}

class SimpleCalculator with RequiredThings {
  def requiredThings = List("a","b")
}

class ComplicatedCalculator extends SimpleCalculator with RequiredThings {
  override def requiredThings:List[String] = List("c") ::: super.requiredThings
}

解决方法

是的,尚未实现对通过自我类型“继承”的方法的超级调用.这将很快(稍微)改变.在此期间,您应该使用继承.

(编辑:李大同)

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

    推荐文章
      热点阅读