【发布时间】:2019-10-27 01:22:44
【问题描述】:
我最近开始学习 Clojure,想知道是否有执行简单 .clj 文件的标准方法。
我已经安装了 Leiningen 并使用 lein new app my-stuff 创建了我的第一个名为 my-stuff 的项目。
为了运行 my-stuff.core,我从 lein run 开始:
user>lein run
Hello, World!
接下来,我尝试了lein repl,接着是:
user=> (require 'my-stuff.core)
nil
user=> (my-stuff.core/-main)
Hello, World!
nil
我也用lein repl做了一些基本的评估:
user=> (defn sum [x y] (+ x y))
#'user/sum
user=> (sum 1 2)
3
我试图在 my-stuff.core 中定义这个函数:
(ns my-stuff.core ((:gen-class))
(defn sum [x y] (+ x y))
(defn -main
[& args]
(sum [1 2]))
我收到以下错误: clojure.lang.ArityException:错误数量的 args (1) 传递给:my-stuff.core/sum
如果这是一个愚蠢的问题,我深表歉意,但是我将如何在 core.clj 中正确定义此函数?在单独的文件中定义它并从 core.clj 文件中引用它是否更有意义?
谢谢。
更新
如果函数是在另一个 .clj Clojure 文件中定义的,那么声明命名空间以便能够运行项目 my-stuff 中的代码的正确方法是什么?
【问题讨论】:
-
我已经更新了我的答案,以解决您关于从另一个命名空间调用函数的问题。