惯用语(defn -main ...)在clojure程序中意味着什么?

时间:2011-03-14 22:21:14

标签: clojure

我熟悉例如Java和Lisp,但我在其他人的代码中看到的是一些明显的习惯用法,例如调用入口点'-main'并在(in-ns`foo)中使用命名空间名称的反引号,这样的事情。我没有在文档或教程中的任何地方看到这些拼写。是否有一些资源可以解释围绕结构化程序的这些约定?

修改

我想我必须从这个答案中找到反击的东西:Splitting a Clojure namespace over multiple files,我在试图理解(defn -main ...)时偶然发现了。鉴于作者,我把它作为最佳实践。然而,现在我引用他引用的Clojure来源,我发现只使用常规引用。我猜这很可能是一个错字。

(相应地缩小了问题标题的范围)

1 个答案:

答案 0 :(得分:6)

gen-class的默认值是使用 - 作为该类的方法名称的前缀。这就是为什么-main是java -cp clojure.jar yourclass

的默认入口点

Backticks使用当前命名空间限定他们的参数,因此(in-ns`foo)与(in-ns'current-namespace / foo)相同,我认为这不是特别惯用的。惯用的方法是将每个命名空间放在自己的文件中(ns ...)在顶部,并根据需要使用或要求它们。