2014-09-12 9 views
10

Ho appena aggiornato un progetto Scala da 2.10 a 2.11.2.Perché Scala 2.11.2 mi dà errore di compilazione per il numero in virgola mobile nella notazione scientifica?

Per il seguente codice:

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

che sto ottenendo l'errore

e non è un membro del Int

nozione precedenza scientifica ha funzionato bene. Ho il sospetto che non è una cosa 2.11 ma più probabilmente alcune stranezze con l'aggiornamento che è stato per la maggior parte solo un caso di aggiornamento del file SBT ad avere:

scalaVersion := "2.11.2" 

dove era in precedenza:

scalaVersion := "2.10.3" 

Non riesco a pensare a cosa potrebbe causare questo. Tutto quello che so è che funzionava bene sotto 2.10.

Qualcuno ha già visto questo problema prima o può suggerire una correzione? (o nuova linea di richiesta!)

Sto usando JDK 1.7.0_21 e sbt.version=0.13.5.

Qualsiasi aiuto o idea apprezzati.

risposta

18

La sintassi per la notazione scientifica è Scala è un numero in virgola mobile seguito da e (o E) e dall'esponente. Il problema che stai vedendo è un cambiamento in ciò che conta come un numero in virgola mobile, e non ha nulla a che fare con la sintassi per la notazione scientifica (sebbene ciò contribuisca alla confusione del messaggio di errore).

È possibile confermare questa sparando un 2.10.4 REPL con -deprecation acceso:

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. 
      ^

E infatti, in questo solo 2.11 non verrà compilato affatto.

È possibile ottenere esattamente la stessa cosa scrivendo sia 1e-150 o 1.0e-150, che funzioneranno entrambi in 2.10 o 2.11.

+0

risposta perfetta. Grazie mille :) – ZenMasterZed

+0

16 voti per un duplicato, o ... 16 voti per Travis? –

+0

@ som-snytt: è un duplicato? Se è "voti per Travis" mi piacerebbe anche qualche altra attenzione per [la mia domanda informe la scorsa notte] (http://stackoverflow.com/q/25923974/334519) per favore. –

Problemi correlati