微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐