gpt4 book ai didi

scala - 如何将任意数字转换为 double ?

转载 作者:行者123 更新时间:2023-12-04 16:38:40 36 4
gpt4 key购买 nike

我需要进行一些原始数据解析,并且不得不使用Any类型。

如果我读取的数据为任何数字格式(Int/Double/Long/...),我需要将其转换为Double,否则(例如String)需要将其保留为空。

这是我想出的:

def extractDouble(expectedNumber: Any): Option[Double] = expectedNumber match {
case i: Int => Some(i.toDouble)
case l: Long => Some(l.toDouble)
case d: Double => Some(d)
case _ => None
}

这显然看起来还不算体面。在Scala中,有没有更好的方法来解决这个问题?

最佳答案

一旦在编译时丢失了类型信息(由于您的输入类型就是Any作为其要求的一部分)就在您的情况下发生了,那么除了在运行时使用expectedNumber检查isInstanceOf之外,没有更多的选择了。

您在建议的解决方案中正在执行的类型模式匹配掩盖了这一点。我认为这是您情况下的最佳解决方案。

但是,还有一种替代方法是使用Try并将其转换为Option。例如:

Try(expectedNumber.toString.toDouble).toOption

从许多方面来看这都是一个肮脏的解决方案(根本没有效率,使用异常来控制流,...),所以 我将定义性地使用您的第一种方法

关于scala - 如何将任意数字转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42433234/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com