Clojure: Lein run kann das Symbol nicht auflösen

8

Ich habe gerade mit meinem ersten Clojure-Projekt begonnen, indem ich lein, den Code hier verwende:

%Vor%

Ich habe versucht, dies mit "lein run" auszuführen, aber ich bekomme immer diesen Fehler:

%Vor%

Was mache ich falsch?

    
jwesonga 18.05.2014, 00:06
quelle

1 Antwort

9

Sie haben nur von clojure core getrunken, was bedeutet, dass jede andere Kernfunktion nicht mehr für Sie verfügbar ist. Versuchen Sie, ns so zu ändern, dass :require anstelle von :use , as verwendet wird das ist idiomatischer.

Beachten Sie, dass die Reihenfolge in clojure von Bedeutung ist. Wenn Sie also keine Funktion oben in Ihrer Datei deklarieren, wie in C und einigen anderen Sprachen, können die früheren Funktionen nicht darauf verweisen Sie. Dies hat Ihren Fehler verursacht und deshalb möchte ich meine Funktion -main unten definieren. Es ist eine Frage des Stils.

Eine andere Sache ist, dass Ihre Funktion -main gerade variable Argumente verwendet und sie nicht verwendet. In Clojure ist es idiomatisch, _ zu verwenden, um auf einen Parameter zu verweisen, der nicht verwendet wird. Sie könnten & _ verwenden, um Fehlermeldungen zu vermeiden, wenn der Benutzer unnötige Argumente übergibt, aber ich hätte einfach die Funktion -main von Anfang an parameterlos. Dies liegt daran, dass main bei der Ausführung des Programms nichts bereitstellen muss und Fehler das Debuggen erleichtern. Es ist gut zu wissen, was gebraucht wird und wo. Die sample.csv -Datei ist bereits vorhanden und hat read-file aufgerufen, daher sollte das Programm ausgeführt werden, wenn Ihre read-file -Funktion korrekt ist und die sample.csv -Datei am richtigen Ort ist.

In Bezug auf Ihre -main -Funktion wäre es nett, einen kleinen Test dort zu setzen, um zu sehen, ob er richtig ausgeführt wird, also habe ich ihn geändert, um den Inhalt der CSV-Datei auf Ihrer Konsole auszugeben. Diese Art, aus einer Datei zu drucken, ist effizient und lohnt sich selbst.

Stellen Sie schließlich sicher, dass Sie clojure-csv.core in Ihre project.clj -Datei einfügen.

core.clj:

%Vor%

project.clj:

%Vor%

Sie müssen wie oben gezeigt fileops.core als: main deklarieren. Dies teilt Leiningen mit, welche Funktion ausgeführt werden soll, wenn Sie lein run eingeben. Sehr wichtige und knifflige Sachen.

Stellen Sie nun sicher, dass Sie sich im Stammverzeichnis Ihres Projektverzeichnisses befinden und führen Sie am Terminal Folgendes aus:

%Vor%

Viel Glück!

Weiterführende Literatur:

8 Light Blog auf Namensräumen

fliegende Maschinen-Studios Erklärung von lein run

    
kurofune 18.05.2014, 03:02
quelle

Tags und Links