Scala 如何使用字符串常量创建枚举
我有一个scopt解析器,它接受颜色参数(“绿色”、“红色”、“蓝色”)。我想把字符串常量放在enum中,你们能帮我写它并把它放在项目中最好的地方吗(可能是package.scala)Scala 如何使用字符串常量创建枚举,scala,Scala,我有一个scopt解析器,它接受颜色参数(“绿色”、“红色”、“蓝色”)。我想把字符串常量放在enum中,你们能帮我写它并把它放在项目中最好的地方吗(可能是package.scala) 这实际上在中进行了描述。只要您的枚举是一个单独的类型,您就可以为它创建scopt.Read // enumeration object Color extends Enumeration { type Color = Value val Red, Green, Blue = Value } // has
这实际上在中进行了描述。只要您的枚举是一个单独的类型,您就可以为它创建
scopt.Read
// enumeration
object Color extends Enumeration {
type Color = Value
val Red, Green, Blue = Value
}
// has to be imported manually as we cannot put it into `Value` companion
implicit val colorRead: scopt.Read[Color.Value] =
scopt.Read.reads(Color withName _)
如果将
color
类型设置为Config
的color
字段,隐式读取[color]
将使您能够解析配置中的opt[color]
选项。您尝试了什么?您的enum有什么要求?
// enumeration
object Color extends Enumeration {
type Color = Value
val Red, Green, Blue = Value
}
// has to be imported manually as we cannot put it into `Value` companion
implicit val colorRead: scopt.Read[Color.Value] =
scopt.Read.reads(Color withName _)
// enumeratum
sealed trait Color EnumEntry
object Color extends Enum[Color] {
case object Red extends Color
case object Green extends Color
case object Blue extends Color
val values = findValues
implicit val colorRead: scopt.Read[Color] =
scopt.Read.reads(Color withName _)
}
// normal sealed trait
sealed trait Color EnumEntry
object Color extends Enum[Color] {
case object Red extends Color
case object Green extends Color
case object Blue extends Color
implicit val colorRead: scopt.Read[Color] =
scopt.Read.reads {
case "green" => Color.Green
case "red" => Color.Red
case "blue" => Color.Blue
}
}