Sintassi Scala: passa la stringa all'oggetto
Domanda
Mentre giocavo con regexps in Scala ho scritto qualcosa del genere:
scala> val y = "Foo"
y: java.lang.String = Foo
scala> y "Bar"
scala>
Come puoi vedere, la seconda affermazione è accettata silenziosamente. Questa è una dichiarazione legale e, in caso affermativo, che cosa fa? O è un bug nel parser e dovrebbe esserci un messaggio di errore?
Soluzione
Questo è davvero un errore nel parser. È stato risolto in scala 2.7.2 (che al momento è RC6)
$ ./scala
Welcome to Scala version 2.7.2.RC6 (Java HotSpot(TM) Client VM, Java 1.5.0_16).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def y = "foo"
y: java.lang.String
scala> y "bar"
<console>:1: error: ';' expected but string literal found.
y "bar"
^
scala> val x = "foo"
x: java.lang.String = foo
scala> x "foo"
<console>:1: error: ';' expected but string literal found.
x "foo"
^
scala> "foo" "bar"
<console>:1: error: ';' expected but string literal found.
"foo" "bar"
^
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow