【问题标题】:Converting Option[T] to Option[U] in Scala在 Scala 中将 Option[T] 转换为 Option[U]
【发布时间】:2011-11-10 22:04:08
【问题描述】:

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

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

这很好用。但是,它似乎非常冗长,并且需要大量工作。谁能告诉我一个更简单的方法吗?

谢谢!

【问题讨论】:

  • 这个特性可以抽象化:它叫做 'Functor' 。仿函数类型类可以分别与它的实例一起使用,例如:List、Tree、Option 等。如果您开始使用基于类型类的方法,这是一个非常强大的概念。

标签: scala syntax functional-programming


【解决方案1】:

看来你需要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/

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2016-11-08
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      相关资源
      最近更新 更多