Scala 2.10,Double.isNaN和拳击

时间:2013-04-19 19:36:56

标签: scala boxing scala-2.10

在Scala 2.10中,预计会someDouble.isNaN包装?运行我的代码通过反编译器调用.isNaN,我仍然在我的代码中看到double2Double的调用。鉴于2.10中的新AnyVal工作,我认为它在运行时不会比java.lang.Double.isNaN(someDouble)更糟,没有虚假分配。我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

不幸的是,isNaNjava.lang.Double上的一种方法,必须隐式转换为java.lang.Double,因此Scala RichDouble值类无法重新实现{{ 1}}要快,当你使用isNaN时,你会选择isNaN

由于这只会导致java.lang.Double的测试速度缓慢或笨拙,因此我定义了

NaN

然后我可以使用implicit class RicherDouble(val d: Double) extends AnyVal { def nan = java.lang.Double.isNaN(d) } 进行检查。