scala中是否存在任何与此等效的本机函数?
def strConvert[T](v: Option[T]): String = {
if (v.isDefined)
v.get.toString
else
""
}
答案 0 :(得分:10)
对于通用T
,您可以避免使用map
- v.map(_.toString).getOrElse("")
答案 1 :(得分:4)
scala> Some(1).fold("")(_.toString)
res0: String = 1
scala> None.fold("")(_.toString)
res1: String = ""
答案 2 :(得分:3)
Option
是一个单子。在FP中,当使用monad时,如果monad包含状态(即None
以外的值),则定义要发生的事情。否则,你继续前进。
val ostring: Option[String] = functionThatGetsOptionString()
ostring.map { s =>
functionThatUsesString(s)
}
在map
函数中,如果s
为Option
,则Some(String)
将包含原始字符串,否则Option
将不会执行内部正文是None
。