3

假设我想在 REPL 中执行以下操作:

(ns a1)

(defn adder [a b]
  (+ a b))

(ns b1
  (:require [a1 :as a]))

(println (a/adder 1 2))

如果代码是根据声明的命名空间在文件中定义的,这可以正常工作。但是,如果我们在 repl 中执行它 - 那么我们会在这一行得到一个错误:

(ns b1
  (require [a1 :as a]))

错误是:

FileNotFoundException Could not locate a1__init.class or a1.clj on classpath:   
clojure.lang.RT.load (RT.java:432)

现在我知道我可以明确地将命名空间的全名放在:

(println (a1/adder 1 2))

但我想缩写我的命名空间。(如果我的命名空间是 20 个字符或更多)。

我要更改什么以确保我可以以缩写方式引用 repl 上的不同名称空间?

4

1 回答 1

3

require在内部使用该函数alias来做你想做的事:

(ns b1)
(alias 'a 'a1)
于 2012-11-25T01:42:07.067 回答