简明地将一种类型的 Optional 映射到另一种类型(如果存在)?

Concisely mapping an Optional of one type to another if it exists?

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

case class A(value: String)
case class B(value: String)
case class C(value: String)

我将几个 Option[String] 值作为函数中的参数,如果参数中的值不是 None,我想创建 Option[A]、Option[B]。

我目前是这样做的:

val first = parameterOptional match {
    case Some(theStringValue) => Some(A))
    case None => None
}

它有效,但我想知道是否有更简洁的方法,我是 Scala 的新手。

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

谢谢

据我了解,您想将可选参数包装到其中一种情况下 类?然后你可以简单地使用 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