在
Scala 2.10中,是否需要someDouble.isNaN?运行我的
代码通过反编译器
调用.isNaN,我仍然在
代码中看到对double2Double的
调用.鉴于新的AnyVal在2.10中的工作,我希望它在运行时不会比
java.lang.Double.isNaN(someDouble)更糟,没有虚假的分配.我错过了什么吗?
不幸的是,isNaN是
java.lang.Double上的
一个方法,并且必须有
一个隐式转换为
java.lang.Double,因此Scala RichDouble值类不能重新实现isNaN要快,当你使用isNaN时,你可以选择
java.lang.Double中.
由于这只留下了测试NaN的缓慢或笨拙的方法,我定义
implicit class RicherDouble(val d: Double) extends AnyVal {
def nan = java.lang.Double.isNaN(d)
}
然后我可以用.nan来检查.