我在core.clj中的clojure中做了一些编码,它有一个-main方法,可以接受0个或更多的参数:
(defn -main
"dequeue function"
[& args]
我正在加载此clj文件:
(load-file "src/exercise/core.clj")
然后我试图学习如何在repl中调用它来开发core_test.clj(如果有关于如何开发此自动测试的任何提示,请给我一些提示)。我现在要做的是:
(-main "resources\\sample-input.json" "a")
但这是印刷" 参数0 "这是一条消息,我告诉代码打印只是为了看看有多少参数与
一起传递(println "Arguments" (count *command-line-args*))
我如何做到这一点? 谢谢!
答案 0 :(得分:2)
我试图学习如何在repl中调用它来开发core_test.clj
通常您会编写从-main
调用的其他函数并测试这些函数而不是应用程序的入口点-main
。
但 应该能够像任何其他功能一样调用-main
。我有一个src/sandbox/main.clj
文件:
(ns sandbox.main)
(defn -main [& args]
(prn args))
在项目文件夹中启动REPL,我可以这样调用-main
:
(use 'sandbox.main) ;; (load-file "src/sandbox/main.clj") also works
=> nil
(in-ns 'sandbox.main)
=> #object[clojure.lang.Namespace 0x67ccce04 "sandbox.main"]
(-main "some" "args")
;; ("some" "args")
=> nil
我的例子中有一个关键区别:它打印-main
args
绑定; *command-line-args*
为零,因为您没有使用args从命令行运行代码,而是从REPL运行它。
无论如何,直接使用existing library to work with CLI args而不是*command-line-args*
可能更好。