scala - 将 Option 中的值转换为另一种类型

标签 scala scala-option

我正在尝试做一些看起来应该在 Scala 中具有直接语法/功能的事情。我只是不知道那是什么。我正在尝试将 Option 的包含值(如果它不是 None )转换为另一种类型。

只是我想知道如果我想实现以下功能,代码会是什么

def myFunc(inVal:Option[Double]):Option[BigDecimal] = {
    //Code I need goes here
}

注意:我实际上并没有实现这个功能,它只是我展示我需要的最清晰的方式

最佳答案

def myFunc(inVal: Option[Double]): Option[BigDecimal] =
  inVal map {d => d: BigDecimal}

一般来说,如果您想转换容器中的值( OptionSeqListTryFuture 等),您应该使用方法 map在这个容器上。

方法map接受 lambda(函数)作为参数并将此函数应用于所有元素。 map不应该改变元素的数量:mapSome永远不会回来None .

您可以使用方法 BigDecimal.apply转换 DoubleBigDecimal像这样:
BigDecimal(1.1)
// res0: scala.math.BigDecimal = 1.1

但也有来自 Double 的隐式转换至 BigDecimal ,因此您可以像这样指定所需的类型:
1.1: BigDecimal
// res0: scala.math.BigDecimal = 1.1

val bd: BigDecimal = 1.2

PS:类型推断允许你使用 d => d而不是 d => d: BigDecimal在这里,但它会使您的代码非常不清楚。

关于scala - 将 Option 中的值转换为另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586266/

相关文章:

scala - 在到达第一个None时如何停止构建Option [Collection]?

scala - 在 Scala 中从字符串创建复杂数据

scala - 类型不匹配;找到 : newValue. 类型(底层类型 S)需要:T

scala - Scala Play 中的状态是如何管理的! 2.0 网络套接字?

scala - 使用空参数从Scala调用Java API

scala - 如何将 scala 中的序列转换/包装为 Option[Seq],以便如果列表为空,则 Option 为 None

scala - 由于公共(public) pom 文件不正确,SBT 无法解析 fakehttpserver 依赖项

list - 如何创建具有特定类型的 List 的包装器

scala - 有什么方法可以使用反射在运行时访问 Scala 选项声明的类型吗?

scala - 为什么 Option 会扩展 Product?