2008-11-02 6 views
5

Tout en jouant avec regexps à Scala j'ai écrit quelque chose comme ceci:syntaxe Scala - chaîne passe pour objet

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

scala> y "Bar" 

scala> 

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

Répondre

5

Il s'agit en effet d'une erreur dans 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" 
      ^
Questions connexes