Dies ist ein einfaches Programm. Ich habe erwartet, dass main
im interpretierten Modus läuft. Aber die Anwesenheit eines anderen Gegenstandes führte dazu, dass es nichts tat. Wenn% code_de nicht vorhanden wäre, hätte das Programm ausgeführt.
Warum wird QSort
nicht aufgerufen, wenn ich dies in der REPL ausführe?
BEARBEITEN: Sorry für Verwirrung, ich führe das Skript als main
.
Wenn der Parameter für scala
eine vorhandene .scala-Datei ist, wird er im Arbeitsspeicher kompiliert und ausgeführt. Wenn es ein einzelnes Objekt der obersten Ebene gibt, wird eine Hauptmethode gesucht und, falls sie gefunden wird, ausgeführt. Wenn dies nicht der Fall ist, werden die Anweisungen auf oberster Ebene in eine synthetische main-Methode eingebettet, die stattdessen ausgeführt wird.
Aus diesem Grund ermöglicht das Entfernen der QSort-Objekte auf oberster Ebene die Ausführung Ihrer Hauptmethode.
Wenn Sie dies zu einem vollständigen Programm erweitern möchten, rate ich Ihnen, die kompilierten .class-Dateien zu kompilieren und auszuführen (verwenden Sie ein Build-Tool wie sbt
):
Wenn Sie ein einzelnes Dateiskript schreiben, löschen Sie einfach die main-Methode (und ihr Objekt) und schreiben Sie die Anweisungen, die im äußeren Bereich ausgeführt werden sollen, wie:
%Vor% und führen Sie mit: scala qsort.scala
Der Befehl scala
ist für die Ausführung von Scala-Skripten (Einzelprogramme) und komplexen Java-ähnlichen Programmen (mit einem Hauptobjekt und einer Menge Klassen im Klassenpfad) gedacht.
Von man scala
:
Wenn nicht ausdrücklich angegeben, wird der howtorun
-Modus aus den Argumenten ermittelt, die an das Skript übergeben werden.
Wenn ein vollständig qualifizierter Name eines Objekts angegeben wird, erwartet scala
-howtorun:object
und erwartet ein kompiliertes Objekt mit diesem Namen auf dem Pfad.
Andernfalls wird, wenn der Parameter scala
eine vorhandene .scala-Datei ist, -howtorun:script
geschätzt, und der Einstiegspunkt wird wie oben beschrieben ausgewählt.
Jede Methode eines Objektmoduls kann in REPL ausgeführt werden, indem sie explizit angegeben wird und die erforderlichen Argumente erhält. Zum Beispiel:
%Vor%In einigen Fällen kann dies für schnelles Testen und zur Fehlerbehebung hilfreich sein.
Tags und Links scala