将字符串列表转换为案例对象列表

时间:2018-06-21 08:31:08

标签: scala

我有以下案例对象

sealed trait Type

case object Foo extends Type
case object Bar extends Type

我有一个包含字符串的列表

Foo, Bar

是否可以将它们转换为上面定义的案例对象列表?

2 个答案:

答案 0 :(得分:0)

您可以声明一个将字符串转换为给定类型的函数

sealed trait Type

case object Foo extends Type
case object Bar extends Type

val inputList = List("Foo","Bar","Foo","Bar")

def convertToCaseObject(input: String) ={
  input match{
    case "Foo" => Foo
    case "Bar" => Bar
  }
}

val output = inputList.map(x => convertToCaseObject(x))

在这里,函数convertToCaseObject接受输入String,对它们进行模式匹配,并给出相应的类型作为输出。所以最后您最终得到了所需的输出。 如果您需要任何其他信息,请与我们联系。谢谢

答案 1 :(得分:0)

让我们说

sealed trait Type

case object Foo extends Type
case object Bar extends Type

  val inputList = List("Foo","Bar","Foo","Bar","Other","SomeJunk")

  inputList.map(x=>if(x=="Foo")Foo else if(x=="Bar") Bar else x )

在Scala REPL中:

scala> inputList.map(x=>if(x=="Foo")Foo else if(x=="Bar") Bar else x )
res33: List[java.io.Serializable] = List(Foo, Bar, Foo, Bar, Other, SomeJunk)