scala - 使用 circe-config 进行配置的通用解析器
问题描述
我有一个枚举:
import com.typesafe.config.Config
import enumeratum.{Enum, EnumEntry}
import io.circe
import io.circe.config.syntax._
import io.circe.generic.extras.auto._
sealed trait MyEnum extends EnumEntry
object MyEnum extends Enum[MyEnum] {
case class Foo(a: String) extends MyEnum
object Foo {
def parse(config: Config): Either[circe.Error, Foo] = config.as[Foo]
}
case class Bar(b: Int) extends MyEnum
object Bar {
def parse(config: Config): Either[circe.Error, Bar] = config.as[Bar]
}
def values = findValues
}
typesafe-config
像这样我可以用和解析配置文件io-circe
。我想做的是定义一个解析方法,它根据输入类型解析我的配置。
sealed trait MyEnum extends EnumEntry
object MyEnum extends Enum[MyEnum] {
def parse[T <: MyEnum](config: Config): Either[circe.Error, T] = config.as[T]
case class Foo(a: String) extends MyEnum
case class Bar(b: Int) extends MyEnum
def values = findValues
}
然后我会这样使用:
val config: Config = ???
val result = MyEnum.parse[Foo](config)
不幸的是它没有编译,我错过了什么?可能吗?
解决方案
推荐阅读
- c# - 如何组合派生类及其基类中命名相似的嵌套类
- neural-network - DiffEqFlux.sciml_train 如何在 Julia 中用于神经 ODE?
- arrays - 在 CollectionViewCell 中重新加载 TableViewCell
- jquery - 如何为数据表中动态添加的子行添加背景颜色?
- oracle-sqldeveloper - 通过在 SQL developer 中执行脚本导出 xlsx 文件
- themes - Shopify 主题许可证
- c# - Web 应用程序中的 Newtonsoft.Json 6.0.0.0 和 12.0.0.0 与 Web Api、C# 冲突
- android - 如何在 Android Studio 中添加平板电脑分辨率支持
- swagger - 在 Nest.js 项目中添加 Swagger 基本路径字段
- mysql - 在mysql中选择多个表的公共值