scala - 在 Scala 中为父类(super class)生成构造函数

标签 scala inheritance case-class

给定简单的类层次结构

abstract sealed class Base(id: String)

case class Child1(id: String, value: Int) extends Base(id)

case class Child2(id: String, value: Long, file: File) extends Base(id)

我可以使用宏或类似的东西来避免将 id 传递给 Base(并指示编译器为我生成它)吗?对于单个参数,通过它并不难,但如果有多个参数,它就会变得不舒服。

或者我是否可以省略子类中的 id 规范,让编译器从基类中为我生成一个?

最佳答案

您可以将 Base 作为特征:

sealed trait Base {
  val id: String
}

case class Child1(id: String, value: Int) extends Base
case class Child2(id: String, value: Long, file: File) extends Base

关于scala - 在 Scala 中为父类(super class)生成构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533206/

相关文章:

Scala - 当依赖类也使用相同的泛型类型时,使用 guice 注入(inject)泛型类型

java - 正则表达式导致 StackOverflowError

android - 我的 Android 主文件夹在哪里?

c++ - 如何在 C++ 中从模板基类的构造函数调用模板父类(super class)的构造函数?

c++ - 基类中的静态变量是否由所有派生类共享?

c++ - 如何优先使用虚方法覆盖和继承

Scala案例类翻倍

Scala - 枚举与案例类

scala - scala 的 "collect"采用偏函数的 Spark 数据集等价物

scala - 如何从 DataFrame 中选择案例类中存在的列