[英]Clojure namespaces
我想將一個大的 clojure-script 拆分成較小的。 它看起來像這樣。
一:
(ns one
(:use [two :only (show)]))
(def status "WORKING")
二:
(ns two
(:use [one :only (status)]))
(defn show [] (println status))
結果:異常。
PS我知道會發生某種遞歸命名空間構造。 我只知道一個草率的半解決方案,比如在引用命名空間之前定義沒有正文? 有什么建議么?
ponzao的答案+1。 更詳細地說:命名空間的循環依賴通常是一個標志,表明您沒有正確理解抽象和/或 API。 您“混合”層或事物應該只在一個命名空間中,因為它們確實屬於一起。
如果您只想將一個命名空間拆分為多個文件,這也是可能的。
名稱/空間.clj:
(ns name.space)
(declare status)
(load "space_one")
(load "space_two")
名稱/space_one.clj:
(in-ns 'name.space)
(defn show [] (println status))
名稱/space_two.clj:
(in-ns 'name.space)
(def status "WORKING")
您正在構建兩個組件之間的循環依賴關系,您確定這是您想要的嗎? 為什么不使用第三個命名空間來包含它們的常用功能呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.