Clojure - 需要在repl中声明的命名空间

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中使用缩写的方式引用不同的命名空间?

1个回答

3

require 使用内部函数alias来实现您想要的功能:

(ns b1)
(alias 'a 'a1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接