【问题标题】:Loading file with namespace doesn't work?使用命名空间加载文件不起作用?
【发布时间】:2016-03-08 18:32:09
【问题描述】:

假设我有一个完全独立的(如文件系统中的某处)文件:

(ns separate)

(def a "test")

现在,如果我尝试像这样加载该文件:

(load-file "separate.clj")
(require 'separate)
(separate/a)

它会抛出一个错误,指出 separate 未作为命名空间找到。为什么会这样,我该如何解决?

编辑:这实际上是我正在运行的代码:

【问题讨论】:

    标签: clojure namespaces


    【解决方案1】:
    (require 'separate)
    

    应该是:

    (require '[separate])
    

    clojuredocs 中没有示例可能是因为单部分命名空间不常见。

    【讨论】:

    • 不起作用 :( 它告诉我找不到该文件。我已经用我正在执行的代码的图像更新了我的问题。
    • 适用于我的 repl。您是否检查过传递给load-file 的路径是否正确?我使用了绝对路径(load-file "/home/muhuk/tmp/separate.clj"
    • 是的,我正在使用str*cwd* 与路径连接起来。
    • 我可能会尝试完全重新安装 lein。由于某种原因,repl 也不起作用。
    • 不行,还是不行。在 REPL 中工作(即使不需要),但在通过 lein run 执行时不能。
    【解决方案2】:

    找到解决方案,我需要这样做:

    (deref (get (ns-interns 'separate) 'a))
    

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 2017-11-03
      • 2013-06-06
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多