2009-07-15 5 views
0

J'essaie de tester cette Scala dans la console (je veux dire console pas le fichier script):Est-il possible d'écrire une boucle dans Scala Console?

while i < 10 {print(i) i += 1} 

Il ne fonctionne pas. J'ai essayé plusieurs lignes, il ne semble pas non plus. Est-ce que je suis obligé d'utiliser un fichier script juste pour tester une simple boucle?

Répondre

10

Oui, c'est possible. Vous avez des erreurs de syntaxe cependant:

var i = 0 
while (i < 10) { println(i); i += 1 } 

Ou sur plusieurs lignes:

var i = 0 
while (i < 10) { 
    println(i) 
    i += 1 
} 
+4

Bien sûr, pour le même effet il y a: (i <- 0 jusqu'à 10) {println (i); }, la manière "while" de le faire semble inhabituelle dans Scala. – Calum

+4

Ou le plus succinct "0 jusqu'à 10 pour chaque println" –

2

Ce que vous voulez est la suivante:

var i = 0; while (i < 10) { print(i); i += 1 }; 
4
scala> while i < 10 {print(i) i += 1} 
<console>:1: error: '(' expected but identifier found. 
     while i < 10 {print(i) i += 1} 
      ^

Comme indiqué par le message d'erreur, un tout doit être suivi d'un "(", car la condition pour laquelle il est testé doit être placée entre parenthèses.La même chose vaut pour "si" et "pour", par w ay.

1

D'autre part, Scala vous encourage à ne pas utiliser une variable mutable et en + état

Si vous souhaitez imprimer les chiffres de 0 à 9, utilisez un sequence comprehension:

for (var <- range) doSomethingWith (var) 

En votre cas sera:

for (i <- 0 to 9) print (i) 

(oui, l'exemple semble assez stupide, mais il aide à la transition vers un plus code « Scalaish »)

6

Comme d'habitude, il y a plus d'une façon de le faire:

// join values beforehand and print the string in one go 
println(0 to 9 mkString("\n")) 
// using foreach 
(0 to 9).foreach(println) 
// using for 
for(i <- 0 to 9) println(i) 
+0

+1 pour l'approche fonctionnelle – adrianboimvaser