将元组映射到Scala中的元组

sta*_*kov 0 scala

我想映射一对String的选项,如下所示

val pair: (Option[String], Option[String]) = (Some("a"), None)

val mapped: (String, String) = pair map {case (a:Option[String],b:Option[String]) => (a.getOrElse(""),b.getOrElse(""))}
Run Code Online (Sandbox Code Playgroud)

但输出签名与我的预期不同

(Option[String],(String,String))
Run Code Online (Sandbox Code Playgroud)

看来我在这里遗漏了一些东西......也许scalaz或shapeless允许映射元组的这种功能?

vvg*_*vvg 6

从简单的更改mapmatch你会得到预期的类型.

scala>   val pair: (Option[String], Option[String]) = (Some("a"), None)
pair: (Option[String], Option[String]) = (Some(a),None)

scala>

scala>   val mapped: (String, String) = pair match {case (a:Option[String],b:Option[String]) => (a.getOrElse(""),b.getOrElse(""))}
mapped: (String, String) = (a,"")

scala>

scala>   mapped
res8: (String, String) = (a,"")
Run Code Online (Sandbox Code Playgroud)