Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用枚举作为类型参数_Scala_Enumeration - Fatal编程技术网

Scala 使用枚举作为类型参数

Scala 使用枚举作为类型参数,scala,enumeration,Scala,Enumeration,我想写一个这样的方法: val inputValues = input.split(",").toSeq for { inputValue <- inputValues enumValue <- enum.values if enumValue.toString == inputValue } yield enumValue def validate[T无法使用隐式enum进行验证,但使用显式enum时,类似的操作似乎是可能的: scala> import sca

我想写一个这样的方法:

val inputValues = input.split(",").toSeq
for {
  inputValue <- inputValues
  enumValue <- enum.values
  if enumValue.toString == inputValue
} yield enumValue

def validate[T无法使用隐式enum进行验证,但使用显式enum时,类似的操作似乎是可能的:

scala> import scala.util.Try
scala> def validate[T <: Enumeration](input: String,  enum: T):Seq[T#Value]  = {
     | val inputValues = input.split(",").toSeq
     | for (value <- inputValues if Try(enum.withName(value)).isSuccess) yield enum.withName(value) }
validate: [T <: Enumeration](input: String, enum: T)Seq[T#Value]

scala> validate("A,B,D", Letter)
res12: Seq[Letter.Value] = ArrayBuffer(A, B)
scala>导入scala.util.Try
scala>def验证[T]
scala> import scala.util.Try
scala> def validate[T <: Enumeration](input: String,  enum: T):Seq[T#Value]  = {
     | val inputValues = input.split(",").toSeq
     | for (value <- inputValues if Try(enum.withName(value)).isSuccess) yield enum.withName(value) }
validate: [T <: Enumeration](input: String, enum: T)Seq[T#Value]

scala> validate("A,B,D", Letter)
res12: Seq[Letter.Value] = ArrayBuffer(A, B)