我想映射一对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允许映射元组的这种功能?
从简单的更改map到match你会得到预期的类型.
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)
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |