我正在从 leiningen 的本地存储库编译 jar。这适用于我的 project.clj:

:repositories {"local" ~(str (.toURI (java.io.File. "local_mvn_repo")))}

但这失败了:
:repositories [["local" (str (.toURI (java.io.File. "local_mvn_repo")))]]

$ lein deps
java.lang.UnsupportedOperationException: nth not supported on this type: Symbol

即使后者看起来符合 the official example 。我的问题是这样的:

上面的 ~ 做什么,我需要它,为什么我不能使用矢量形式?

最佳答案

在这种情况下 ~ 是取消引用函数,它告诉lieningen 在它之后运行表单并使用运行它产生的值,而不是尝试直接使用它。

第一个示例如果 Leiningen 版本 1.x 的格式,而第二个来自较新的形式并且失败,因为它缺少 ~ 和一些 { }

:repositories [["local" {:url ~(str (.toURI (java.io.File. "local_mvn_repo")))}]]

ps:我不确定是否需要 map 表格,我假设您使用的是 lein2

关于Clojure:如何在 project.clj 中设置 :repositories,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16472202/

10-12 03:52