から呼び出されたときに出力をファイルに書いていないので、私はREPLから呼び出されたときにうまく機能し、以下の機能を持っている:Clojureの機能は-main
しかし(defn plot-data-files
"Produces a file with x-axis values on 1st column and y-axis values on the
2nd column"
[]
(let [filename (user-input "file to which you want to write plot output")
x-values file-data-days
y-values (get-dndtf)
file-writer (new java.io.FileWriter filename)]
(if (= (first y-values) za-not-found)
(println za-not-found)
(for [index (range (count x-values))]
(binding [*out* file-writer]
(prn (Double/parseDouble (str (nth x-values index)))
(Double/parseDouble (str (nth y-values index)))))))))
、私はjarファイルを生成するためにLeinigenを使用しようとすると、この関数はファイルに書き込まれなくなりました。だから私はREPLから-main
を呼び出すことを試みました。そして確かに、この関数はファイル自体に呼び出されたとしても、ファイルに書き込みません。そこで、私は別の関数を定義しようとしました:
(defn call-plot-function
"Basically calls the plot function, plot-data-files"
[] (plot-data-files))
そして確かに、それは動作します。
(defn -main [& args]
(get-all-file-data)
(while (not (= \n (first (user-input "whether you want to output more plot
files"))))
(call-plot-function)))
そして-main
が呼び出されたときに、再び、plot-data-files
は魔法のファイル出力を書き込みません:私は再び-main
を呼び出しますが、この時間は直接call-plot-function
代わりのplot-data-files
を呼び出してみてください。私はここで何をすべきですか?