61 votes

Scala me donne "un début de définition illégal"

J'essaie de commencer avec Scala et je ne peux pas sortir de la porte de départ.

Un fichier composé de la ligne

 package x
 

Donne moi

erreur: début de définition illégal

Indépendamment de ce qu'est x et de l'endroit où j'ai mis le fichier (j'avais une théorie selon laquelle je devais placer le fichier dans une hiérarchie de répertoires pour correspondre à la définition du package, mais non). J'obtiens la même erreur avec l'exemple de code du site Web et avec le REPL.

77voto

Ben James Points 41165

Il semble que vous essayez de déclarer l'appartenance package dans un script Scala (exécuté à l'aide de la commande scala ) ou dans la REPL.

Seuls les fichiers définissant uniquement les classes et les objets qui sont compilés avec scalac peuvent être définis comme appartenant à un package.

Lorsque vous exécutez du code dans un script ou une session REPL, dans les coulisses, il est en fait compilé à l'intérieur d'une méthode d'un objet, dans laquelle la portée d'une déclaration de package ne serait pas légale.

25voto

qtwo Points 90

Depuis Scala 2.11.0-M7, vous pouvez utiliser :paste -raw (correction pour le problème SI-5299 ). Cette option permet de définir des packages dans le REPL:

 scala> :paste -raw
// Entering paste mode (ctrl-D to finish)

package Foo

class Bar

// Exiting paste mode, now interpreting.


scala> import Foo._
import Foo._

scala> new Bar
res1: Foo.Bar = Foo.Bar@3ee2cf81
 

-4voto

Daniel C. Sobral Points 159554

Je ne reçois pas cette erreur. Comment compilez-vous cela? Et, au fait, quel site Web? Quant à REPL, il n'accepte pas les packages. Les packages sont uniquement destinés au code compilé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X