2013-08-31 13 views
7

Ich unterrichte eine einführende Programmierklasse mit Scala. Wir beginnen mit der REPL. Die REPL hat einen Fehler darin, dass, wenn der Schüler einen readLine-Befehl eingibt, seine Eingabe nicht wiederholt wird. Gibt es eine Problemumgehung, die ich vorschlagen oder anbieten kann?Wie Echo Benutzereingabe in Scala REPL?

Ich habe diese Probleme nicht, wenn Eclipse, aber es wird einige Wochen dauern, bis ich Eclipse meine Schüler vorstellen.

+0

@ som-snytt 'reader.readLine' funktioniert nicht mit 2.10 aus irgendeinem seltsamen Grund. Ich vermute, das ist das Problem. – gourlaysama

Antwort

2

Verwendung scala -Xnojline:

scala> val l = readLine 
test 
l: String = test 

Dies schließt jedoch einige Dinge brechen, insbesondere Pfeiltasten, so dass Sie nicht vorherige Befehle ändern können.

Falls verfügbar, können Sie rlwrap scala -Xnojline (sollte auch auf Cygwin verfügbar sein), um diese Funktionalitäten wiederherzustellen.

Voll Kredit this post.

4

Sie können Power-Modus verwenden, um Zugriff auf den REPL Leser zu erhalten; es wird Ihnen ein voll funktionsfähiges readLine:

scala> :power 
** Power User mode enabled - BEEP WHIR GYVE ** 
** :phase has been set to 'typer'.   ** 
** scala.tools.nsc._ has been imported  ** 
** global._, definitions._ also imported ** 
** Try :help, :vals, power.<tab>   ** 

scala> repl.in.readLine("enter something: ") 
enter something: hello world 
res0: String = hello world 

scala> 

bearbeiten: wie @ som-snytt wies darauf hin, in 2.11 können Sie reader statt repl.in in dem obigen Code verwenden, die kürzer und einfacher ist, sich zu erinnern .

+0

Danke! repl.in.readLine funktioniert einwandfrei; reader.readLine nicht.
Auf meinem Mac, erhalte ich Fehler: nicht gefunden: Wert Leser
Auf Windows, erhalte ich Fehler: Wert Leser in der Klasse Globale kann in scala.tools.nsc.Global nicht zugegriffen werden
repl.in.readLine ist wahrscheinlich sowieso besser für meine Studenten, da es betont, dass dies nur für die REPL ist. –

Verwandte Themen