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

Jay*_*lor 10 syntax functional-programming scala

假设我们有一个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
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

ten*_*shi 16

似乎你需要map:

val baz = foo map (_ toInt)
Run Code Online (Sandbox Code Playgroud)

Optiontype支持许多集合操作(​​如map,filter等)和许多很好的有用函数.看看scaladoc吧:

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

此备忘单也可以提供帮助:

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


Ben*_*son 10

所有你需要的是 foo.map(_.toInt)