Scala-Datei in Interpreter laden, um Funktionen zu verwenden?


78

Ich habe einige Scala-Funktionen in einer Datei definiert, nicht in einer Klasse, und ich möchte sie im Scala-Interpreter verwenden. Ich weiß, dass ich sagen kann, dass ich scala filename.scaladie Datei einfach ausführen und den Interpreter beenden soll, aber ich möchte die Datei ausführen und dann im Interpreter bleiben, damit ich einige Tests durchführen kann. Kann mir jemand sagen, wie man einfach eine Datei in den Interpreter lädt, damit ich die darin definierten Funktionen verwenden kann?


21
:load /path/to/filein Scala REPL
Jamil

1
Genial, genau das habe ich gesucht. Ich weiß nicht, warum es so schwer zu finden war.

1
Jamil, bitte poste dies als Antwort, damit Bea Metitiri es als Antwort markieren kann.
Illarion Kovalchuk

Antworten:


98

Geben Sie :load /path/to/filein Scala REPL.

Sie können eine vollständige Liste der verfügbaren Befehle erhalten, indem Sie Folgendes eingeben :help


3
Dies scheint es eine Definition nach der anderen zu bewerten, was nicht funktioniert, wenn die Datei ein versiegeltes Merkmal oder Vorwärtsreferenzen aufweist. :paste /path/to/filefunktioniert besser, wie in Sureshs Antwort erwähnt.
Brian McCutchon

21

Gelegentlich :pastekönnte Ihr besserer Freund sein (als :load). Hier ist ein Beispiel für die Verwendung : Einfügen .

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

if (true)
  print("that was true")
else
  print("false")

[Ctrl-D]

// Exiting paste mode, now interpreting.

that was true

Sie können :pasteeine Datei auch mit dem folgenden Befehl laden:paste [path]

scala> :paste ~/Desktop/repl_seeder.scala
Pasting file ~/Desktop/repl_seeder.scala...
defined object test1

scala> test1.main(Str)
my first scala program

4

Nur zur Erinnerung, geben Sie den vollständigen Pfad an. Ich habe ein Problem in Linux gefunden, indem ich Folgendes getan habe:

: load ~ / fileName.scala

um den Fehler "Diese Datei existiert nicht" loszuwerden, habe ich getan

: load /complete/path/fileName.scala

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.