尝试在内部使用别名,以便能够在本地使用它,但在尝试使用别名时出现错误CompilerException java.lang.RuntimeException: No such namespace: sss
(ns core
(:require [clojure.set]
[clojure.string])
)
(let []
(alias 'sss 'clojure.string)
(println (ns-aliases *ns*) "hi1")
(println (sss/capitalize "hONdURas"))
;(println (clojure.string/capitalize "hONdURas")) ;;this works
(ns-unalias *ns* 'sss)
(+ 1 2)
)
(println (ns-aliases *ns*))
https://repl.it/repls/NoxiousRubberyComputationallinguistics
答案 0 :(得分:1)
(别名......)不一定是顶级。 clojure的工作方式是有一种称为 reader 的东西,它接受文本数据并将其转换为数据结构,这些数据结构是编译器的输入。参见
https://clojure.org/reference/reader
在使用之前,必须已经为读者定义了代码中引用的任何名称空间。 (类似于功能)。
所以,在
(let []
(alias 'sss 'clojure.string)
(println (sss/capitalize "aaa")))
当读者试图转
时,尚未指定别名(sss/capitalize)
进入数据。