Почему Scala 2.11.2 выдает ошибку компиляции числа с плавающей запятой в экспоненциальной нотации?

Я недавно обновил проект Scala с 2.10 до 2.11.2.

Для следующего кода:

 if( x < 1.e-150 ) // conditional ops... 

Я получаю ошибку

e не является членом Int

Раньше научное понятие работало нормально. Я подозреваю, что дело не в версии 2.11, а скорее в какой-то странности с обновлением, которое по большей части было просто случаем обновления файла sbt, чтобы иметь:

scalaVersion := "2.11.2"

где это было раньше:

scalaVersion := "2.10.3"

Я не могу представить, что могло быть причиной этого. Все, что я знаю, это то, что он работал нормально под 2.10.

Кто-нибудь видел эту проблему раньше или может предложить решение? (или новое направление расследования!)

Я использую JDK 1.7.0_21 и sbt.version=0.13.5.

Любая помощь или идеи приветствуются.


person ZenMasterZed    schedule 12.09.2014    source источник


Ответы (1)


Синтаксис научной записи: Scala - это число с плавающей запятой, за которым следует e (или E) и показатель степени. Проблема, которую вы видите, заключается в изменении того, что считается числом с плавающей запятой, и не имеет никакого отношения к синтаксису научной записи (хотя это действительно способствует запутанности сообщения об ошибке).

Вы можете подтвердить это, запустив REPL 2.10.4 с включенным -deprecation:

scala> val x = 1.
<console>:1: warning: This lexical syntax is deprecated.  From scala 2.11, a dot
         will only be considered part of a number if it is immediately followed
         by a digit.
       val x = 1.
               ^

И, конечно же, в 2.11 это вообще не компилируется.

Вы можете сделать то же самое, написав либо 1e-150, либо 1.0e-150, оба из которых будут работать либо в 2.10, либо в 2.11.

person Travis Brown    schedule 12.09.2014
comment
идеальный ответ. Большое тебе спасибо :) - person ZenMasterZed; 12.09.2014
comment
16 голосов за дубликат или ... 16 голосов за Трэвиса? - person som-snytt; 19.09.2014
comment
@ som-snytt: Это дубликат? Если это голосование за Трэвиса, мне бы также хотелось уделить больше внимания моему вопросу о Бесформенном вчера вечером, пожалуйста. - person Travis Brown; 19.09.2014