我正在尝试做一些看起来应该在 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}
一般来说,如果您想转换容器中的值(
Option
、 Seq
、 List
、 Try
、 Future
等),您应该使用方法 map
在这个容器上。方法
map
接受 lambda(函数)作为参数并将此函数应用于所有元素。 map
不应该改变元素的数量:map
在 Some
永远不会回来None
.您可以使用方法
BigDecimal.apply
转换 Double
至 BigDecimal
像这样: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/