将一种类型的可选项简单映射到另一种类型(如果存在)?

cg_*_*cg_ 0 scala pattern-matching for-comprehension spray

所以我有一堆采用这种格式的案例类:

case class A(value: String)
case class B(value: String)
case class C(value: String)
Run Code Online (Sandbox Code Playgroud)

我在函数中接受了几个Option [String]值作为参数,如果参数中的值不是None,我想创建Option [A],Option [B].

我现在这样做:

val first = parameterOptional match {
    case Some(theStringValue) => Some(A))
    case None => None
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我想知道是否有更简洁的方法来做到这一点,我对Scala很新.

示例中的变量名称显然已被更改.

谢谢

psi*_*yev 5

据我所知,你想将可选参数包装到其中一个案例类中?然后你可以简单地使用map:

scala> case class C(value: String)
defined class C

scala> val optionalParam: Option[String] = Some("zzz")
optionalParam: Option[String] = Some(zzz)

scala> optionalParam.map(C)
res0: Option[C] = Some(C(zzz))

scala> val optionalParam: Option[String] = None
optionalParam: Option[String] = None

scala> optionalParam.map(C)
res1: Option[C] = None
Run Code Online (Sandbox Code Playgroud)