Wie rufe ich eine Funktion in einem Clojure-Namespace, bene-csv.core, aus einem anderen Namespace, bene-cmp.core, auf? Ich habe verschiedene Geschmacksrichtungen ausprobiert: require und: nutze ohne Erfolg. HierAufruf der Funktion im separaten Clojure-Namespace
ist die Funktion in bene-csv:
(defn ret-csv-data
"Returns a lazy sequence generated by parse-csv.
Uses open-csv-file which will return a nil, if
there is an exception in opening fnam.
parse-csv called on non-nil file, and that
data is returned."
[fnam]
(let [ csv-file (open-csv-file fnam)
csv-data (if-not (nil? csv-file)
(parse-csv csv-file)
nil)]
csv-data))
Hier ist der Header bene-cmp.core:
(ns bene-cmp.core
.
.
.
(:gen-class)
(:use [clojure.tools.cli])
(:require [clojure.string :as cstr])
(:use bene-csv.core)
(:use clojure-csv.core)
.
.
.
Die Aufruffunktion - zur Zeit ein Stub - in (bene-cmp.core)
defn fetch-csv-data
"This function merely loads the two csv file arguments."
[benetrak-csv-file gic-billing-file]
(let [benetrak-csv-data ret-csv-data]))
Wenn ich den Header bene-cmp.clj ändern
(:require [bene-csv.core :as bcsv])
und den Anruf ändern ret-csv-Daten
(defn fetch-csv-data
"This function merely loads the two csv file arguments."
[benetrak-csv-file gic-billing-file]
(let [benetrak-csv-data bcsv/ret-csv-data]))
Ich erhalte diesen Fehler
Verursacht durch: java.lang.RuntimeException: Keine solche var: bcsv/ret-csv- Daten
Also, wie rufe ich fetch-csv-Daten? Danke.
Dank. Ich habe die Variable referenziert, anstatt die Funktion aufzurufen. Zumindest meine: Verlangensinstinkte waren gut. – octopusgrabbus