2012-01-19 72 views
1

运行“使用”时,失踪的命名空间错误,我有开始这样的.clj文件:Clojure的:在REPL

(ns clojure_crawl.core) 
(require '[clj-http.client :as client]) 
(use 'clojure.contrib.json) 

由几个函数定义:

(defn f1 [] "" (+ 1 1)) 

(defn f2 [] "" (+ 2 2)) 

等。 。

然而,当我运行命令 “(使用“myfile.core:重装)”

我的一些功能,ALT可以在REPL中看到,无法运行“缺少名称空间”错误。

如何添加的依赖关系,使得REPL可以运行任何在我的文件中定义的功能呢?

回答

5

如果你的代码是在 “clojure_crawl/core.clj”,其命名空间应该是Clojure的-crawl.core(注意连字符)。请参阅http://clojure.org/libs

3

正如Joost所说的,您必须小心连字符和下划线:无论您在名称空间名称中使用连字符,在相应的文件/目录名称中用下划线替换它(反之亦然)。

另外,不鼓励在clj源文件中使用requireuse函数。相反,声明需要直接在ns宏库:

(ns clojure-crawl.core 
    (:require [clj-http.client :as client]) 
    (:use clojure.contrib.json)) 

这也需要适当地从你引用必需的命名空间的负担。