2010-08-22 1 views

ответ

5

Float.floatToIntBits пытается вызвать метод объекта scala.runtime.Float (я думаю).

scala> Float 
res2: Float.type = object scala.Float 

Вы должны java.lang.Float.floatToIntBits:

scala> java.lang.Float.floatToIntBits(2f) 
res1: Int = 1073741824 
+0

Спасибо. Оно работает. Любопытно узнать, почему метод отображается в доступном списке участников при нажатии вкладки в REPL? –

+0

В автозавершении REPL есть некоторые ложные вещи ... они являются просто ошибками, которые будут исправлены. – soc

4

РЕПЛ кода завершения показывает методы из всех Float объектов, доступных на пути (т.е. scala.Float scala.runtime.Float и java.lang.Float). Однако scala.Float scala.runtime.Float имеет преимущество перед java.lang.Float и, следовательно, ошибка.

следующие работы:

scala> import java.lang.{Float => JFloat} 
import java.lang.{Float=>JFloat} 

scala> JFloat.floatToIntBits(2f) 
res5: Int = 1073741824 
+0

Является ли объект 'scala.Float' фактически определенным? Поиск 'float' на сайте API дает только' scala.runtime.Float', и не существует определения в 'package.scala' или' Predef.scala' ... –

+0

@Alexey: Кажется, они переместили 'Float' от 'scala' до' scala.runtime' в v2.8. – missingfaktor

+2

@Alexey: Я думаю, что 'scala.Float' теперь определяется как псевдоним' scala.runtime.Float' в объекте пакета scala'. http://paste.pocoo.org/show/253212/ – missingfaktor

Смежные вопросы