簡體   English   中英

Clojure 命名空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM