Frage

Während das Spiel mit regexps in Scala ich so etwas wie dies schrieb:

scala> val y = "Foo"
y: java.lang.String = Foo

scala> y "Bar"

scala>

Wie Sie sehen können, ist die zweite Aussage nur stillschweigend akzeptiert. Ist das legal eine rechtliche Aussage, und wenn ja, was tut sie? Oder ist es ein Fehler im Parser und es sollte eine Fehlermeldung?

War es hilfreich?

Lösung

Dies ist in der Tat ein Fehler in dem Parser. Es wird in scala 2.7.2 festgelegt (die RC6 im Moment)

$ ./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"
             ^
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top