2013-09-23 8 views
5

Se creo un foglio Scala in Eclipse come segue:toString su un numero negativo non viene compilato in Scala foglio

object negative { 

    2.toString        //> res0: String = 2 

    (2).toString        //> res1: String = 2 

    // compile error 
    (-2).toString 
} 

la linea finale causa un errore di compilazione:

';' expected but ')' found. illegal start of simple expression

Tuttavia, le stesse tre linee si compilano e funzionano bene all'interno di un normale file sorgente di Scala.

Perché questo non funziona nel foglio di lavoro?

Questo sta usando Eclipse 3.7.2, Scala IDE 3.0.0.v-2_10, Scala Foglio 0.1.4.v-2_10

[Aggiornamento: questa domanda originariamente utilizzato toBinaryString, ma il problema si verifica anche con toString, quindi l'ho semplificato)

risposta

1

È un bug. Il codice nell'oggetto principale (il primo) di un foglio di lavoro viene strumentato prima di essere eseguito. Nel caso 2 menzionato, il risultato della strumentazione non è un codice Scala valido.

Ma è solo un problema se il codice è al livello superiore nell'oggetto principale. Se il codice viene spostato su una funzione o su un oggetto diverso nello stesso file, funziona correttamente.

+0

Grazie per la spiegazione. L'ho segnalato come un bug [qui] (https://github.com/scala-ide/scala-worksheet/issues/160) – DNA

+0

Funziona anche se lo si avvolge in un blocco di codice {} all'interno dell'oggetto principale . – DNA

1

I fogli di lavoro di Eclipse sono piuttosto beta; ad esempio l'ultimo controllo, non è stato possibile gestire una decorazione @tailrec su una funzione.

Quindi questo è probabilmente un bug o una limitazione in Eclipse. Dopo tutto, la funzione sembra abbastanza nuova e ci sono molti altri bug.

0

(-2).toBinaryString fornisce lo stesso errore per me.

Si noti che java.lang.Integer.toBinaryString(-2) funziona correttamente.

Problemi correlati