Ich komme aus einem Python-Hintergrund, den ich an jeder Stelle in meinem Code hinzufügen kann
import pdb; pdb.set_trace()
und zur Laufzeit werde ich an dieser Stelle in einen interaktiven Dolmetscher versetzt. Gibt es ein Äquivalent für Scala oder ist dies zur Laufzeit nicht möglich?
debugging
scala
interpreter
Lars Yencken
quelle
quelle
Antworten:
Ja, Sie können auf Scala 2.8. Beachten Sie, dass Sie die Datei scala-compiler.jar in Ihren Klassenpfad aufnehmen müssen, damit dies funktioniert. Wenn Sie Ihr Scala-Programm mit aufrufen
scala
, wird dies automatisch durchgeführt (so scheint es in den von mir durchgeführten Tests).Sie können es dann folgendermaßen verwenden:
Sie können mehrere
DebugParam
Argumente übergeben. Wenn die REPL angezeigt wird, wird der Wert rechts an einen Wert gebunden, dessen Namen Sie links angegeben haben. Wenn ich zum Beispiel diese Zeile wie folgt ändere:Dann erfolgt die Ausführung folgendermaßen:
Sie setzen die Ausführung durch Eingabe fort
:quit
.Sie können auch in REPL fallen bedingungslos durch den Aufruf
break
, das ein empfängtList
vonDebugParam
anstelle eines Vararg. Hier ist ein vollständiges Beispiel, Code und Ausführung:Und dann:
quelle
scala.tools.nsc.MissingRequirementError: object scala not found.
in Scala 2.8 führen. Sie müssen explizit kann auf die Einstellungen von Scalac die Classpath des Host - Prozess zu übergeben, aberbreak
undbreakIf
tun dies nicht. Hier ist eine gepatchte Version davonbreak
: gist.github.com/290632java -classpath ...
. Ich denke, wenn Siescala -classpath
stattdessen verwenden, würde es gut funktionieren.java -classpath
Host-Prozesses nicht an die Einstellungen für scalac: old.nabble.com/…Um Daniels Antwort ab Scala 2.9 zu ergänzen, sind die Methoden
break
undbreakIf
in enthaltenscala.tools.nsc.interpreter.ILoop
. AuchDebugParam
ist jetztNamedParam
.quelle
IntelliJ IDEA:
Evaluate Expression
( Alt+ F8im Menü: Ausführen -> Ausdruck auswerten), um beliebigen Scala-Code auszuführen.Finsternis:
Ab Scala 2.10 wurden beide
break
undbreakIf
aus entferntILoop
.Um in den Dolmetscher einzusteigen, müssen Sie mit arbeiten
ILoop
direkt mit ihm arbeiten.Fügen Sie zuerst die
scala compiler
Bibliothek hinzu. Klicken Sie für Eclipse Scala mit der rechten Maustaste auf project =>Build Path
=>Add Libraries...
=>Scala Compiler
.Und dann können Sie Folgendes verwenden, um den Interpreter zu starten:
In Eclipse Scala kann der Interpreter aus der
Console
Ansicht verwendet werden:quelle