什么是scala中优雅/正确的方式来串联连接一个Option,以便None呈现为空字符串,并且具有值的变量不会包含在Some("xyz")中
case class foo(bar: Option[String], bun: Option[String])
println(myFoo.bar+ "," + myFoo.bun)
Run Code Online (Sandbox Code Playgroud)
我想要的输出就是例如
hello,
Run Code Online (Sandbox Code Playgroud)
代替
Some(hello),None
My *_*adr 10
一种方法是:
val a = foo(Some("Hello"), None)
a.productIterator.collect{ case Some(s) => s }.mkString(",")
Run Code Online (Sandbox Code Playgroud)
另一种方式是:
Seq(bar, bun).flatten.mkString(",")
Run Code Online (Sandbox Code Playgroud)
这不符合您的要求,因为它不会在最后打印逗号,但我仍然建议它,因为它可能会做你想要的.
要得到一个值Option以安全的方式使用getOrElse,并提供一个默认的参数,它会在你的情况下使用Option的None.在您的示例中,它看起来像这样:
case class foo(bar: Option[String], bun: Option[String])
println(myFoo.bar.getOrElse("") + "," + myFoo.bun.getOrElse(""))
Run Code Online (Sandbox Code Playgroud)
然后你会得到所需的结果
| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |