gpt4 book ai didi

scala - 在 Any 上调用 .toDouble 并返回 Option[Double]

转载 作者:行者123 更新时间:2023-12-01 22:18:24 25 4
gpt4 key购买 nike

想知道是否有人对以下内容有创造性的方法:

def toDouble(any: Any): Option[Double] = // { if any has a .toDouble method call it else return None }

例如,Int、String、Long 都有一个.toDouble 方法。如果它存在(甚至是非原始类型),我希望它被调用。

理想情况下是这样的(没有先.toString'ing一切)

def toDouble(any: Any): Option[Double] = {
case any.hasToDouble => Try(any.toDouble).toOption
case _ => None
}

最佳答案

你可以使用

def doubleFromAny(in: Any): Option[Double] = {
Try{in.asInstanceOf[{def toDouble: Double}].toDouble}.toOption
}

问题是通过隐式提供的任何 toDouble 都不起作用(因此字符串 "4.5" 会给你 None ).我也预计性能不会很好。

最后,您需要弄清楚哪些类型是可能的,并使用类似 Jon Anderson 的答案来检查和转换每种类型。

关于scala - 在 Any 上调用 .toDouble 并返回 Option[Double],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122319/

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