2014-11-06 9 views
6

Sto utilizzando Scala 2.11.2.Non è possibile utilizzare un numero negativo nei parametri denominati in Scala

Se ho questa classe Frazione:

case class Fraction(numerator: Int, denominator: Int) {} 

Allora questo dà un errore:

val f = new Fraction(numerator=-1, denominator=2) 

Ma questo non è:

val f = new Fraction(-1, denominator=2) 

Il messaggio di errore è:

Multiple markers at this line 
- not found: value 
numerator 
- not found: value 
numerator 

Ho provato a usare numeri negativi in ​​altri frammenti con lo stesso risultato, ma la documentazione non dice che questo non è possibile.

Sto facendo qualcosa di sbagliato?

Grazie

risposta

12

È necessario uno spazio tra il = e -, oppure si può avvolgere il -1 tra parentesi, altrimenti il ​​compilatore si confonde. Questo perché =- è un nome di metodo valido, quindi il compilatore non può stabilire se si assegna un valore a un parametro denominato o si effettua una chiamata di metodo.

quindi questo dà un errore:

val f = Fraction(numerator=-1, denominator=2) 

ma questo è OK:

val f = Fraction(numerator = -1, denominator = 2) 

e così è questo:

val f = Fraction(numerator=(-1), denominator=2) 
+1

anche 'parola chiave new' non è necessario. È una classe di caso. – tuxdna

+0

Sì, corretto - grazie. – DNA

+0

'numerator = -1' dovrebbe essere sufficiente –