假设我想在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上的不同命名空间?
答案 0 :(得分:3)
require
在内部使用函数alias
来执行您想要的操作:
(ns b1)
(alias 'a 'a1)