我想把一个大的clojure脚本分成小的.它看起来像这样.
一:
(ns one
(:use [two :only (show)]))
(def status "WORKING")
Run Code Online (Sandbox Code Playgroud)
二:
(ns two
(:use [one :only (status)]))
(defn show [] (println status))
Run Code Online (Sandbox Code Playgroud)
结果:例外.
PS我明白某种递归命名空间构造会发生.我只知道一个草率的半解决方案,比如在引用名称空间之前定义 没有正文 ?有什么建议?
kot*_*rak 12
+1为ponzao的答案.详细说明:命名空间的循环依赖性通常是一个标志,您没有得到正确的抽象和/或API.要么"混合"图层,要么只是在一个名称空间中,因为它们真的属于一个.
如果您只想将一个名称空间拆分为多个文件,这也是可能的.
名称/ space.clj:
(ns name.space)
(declare status)
(load "space_one")
(load "space_two")
Run Code Online (Sandbox Code Playgroud)
名称/ space_one.clj:
(in-ns 'name.space)
(defn show [] (println status))
Run Code Online (Sandbox Code Playgroud)
名称/ space_two.clj:
(in-ns 'name.space)
(def status "WORKING")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |