Question

Pendant que je jouais avec les expressions rationnelles en Scala, j’écrivais quelque chose comme ceci:

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

scala> y "Bar"

scala>

Comme vous pouvez le constater, la deuxième déclaration est acceptée silencieusement. Est-ce légal, et si oui, que fait-il? Ou est-ce un bogue dans l'analyseur et il devrait y avoir un message d'erreur?

Était-ce utile?

La solution

Il s’agit bien d’une erreur de l’analyseur. Il est fixé dans la scala 2.7.2 (qui est RC6 pour le 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"
             ^
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top