Scala 2.10,Double.isNaN和拳击

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来检查.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...