在Scala中将Option [T]转换为Option [U]

时间:2011-11-10 22:04:09

标签: scala syntax functional-programming

假设我们有一个Option [String],如果那里有Some(字符串),我们想把它变成Int到.toInt。我会做以下事情:

val foo: Option[String] = Some("5")
val baz: Option[Int] = foo match {
    case Some(thing) => Some(thing.toInt)
    case None => None
}

这很有效。然而,它看起来非常冗长,并且像很多工作一样。有人能告诉我一个更简单的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:16)

似乎您需要map

val baz = foo map (_ toInt)

Option类型支持许多集合操作(​​如mapfilter等)以及许多很有用的函数。看看scaladoc:

http://www.scala-lang.org/api/rc/scala/Option.html

此备忘单也很有帮助:

http://blog.tmorris.net/scalaoption-cheat-sheet/

答案 1 :(得分:10)

您需要的只是foo.map(_.toInt)