使用Leiningen运行.clj Clojure文件

问题描述 投票:0回答:2

我最近开始学习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文件引用它是否更有意义?谢谢。
clojure leiningen
2个回答
0
投票
没有愚蠢的问题! :-)

让我们检查您定义的功能:

(defn sum [x y] (+ x y))

这是一个使用

two自变量xy的函数。在Clojure中,函数参数用方括号括起来,因为它有助于提高可读性。

让我们检查一下如何调用该函数:

(sum [1 2])

这里您仅用一个参数调用函数sum,向量[1 2]就像一个2项数组。该错误试图告诉您:

您正在调用一个带有两个参数,但仅提供了一个参数的函数。在这种情况下,您可以使用以下方法解决错误:

(sum 1 2)

0
投票
我敢肯定有多种方法可以使用Leiningen创建一个独立的.clj文件,但我不知道它是什么。

我确实知道一种创建独立文件的方法,该文件是bash脚本和可执行的clj文件的组合,只要系统安装了Java和clj CLI工具,该文件就可以运行-https://clojure.org/guides/getting_started

它还可以让您在与Clojure源代码相同的文件中指定依赖项,即使这些依赖关系不包含在Clojure本身的一部分中。

这里是一个例子:https://github.com/jafingerhut/dotfiles/blob/master/bin/clj-check-added-metadata

© www.soinside.com 2019 - 2024. All rights reserved.