1
如果我有一個名稱空間表單,我如何從中提取元數據映射?例如:與^
介紹如何從Clojure名稱空間表單解析元數據?
(some-function '(ns ^{:doc "docstring"})) => {:doc "docstring"}
如果我有一個名稱空間表單,我如何從中提取元數據映射?例如:與^
介紹如何從Clojure名稱空間表單解析元數據?
(some-function '(ns ^{:doc "docstring"})) => {:doc "docstring"}
讀者的元數據附加到一個表單在讀
在您的示例中的引號形式的格式不正確作爲Clojure的代碼(即,甚至不考慮它是。特別是ns
表單),因爲元數據映射沒有任何要附加到的內容。固定版本可能是(ns ^{:doc "docstring"} foo)
。這裏foo
成爲ns
的(必填)「名稱」參數。
現在,你可以簡單地從ns
形式使用,也就是說,second
提取符號foo
並讀取其元數據映射:
(-> '(ns ^{...} foo) second meta)
注意,對於命名空間的文檔字符串可以在一個額外的參數的形式提供ns
:
(ns foo
"foo's docstring"
...)
另外,一個附加的「屬性映射」,如果一個在該形式給出可以被提供作爲一個額外的參數(文檔字符串之後,在名S後,立即其他符號)。該屬性圖將與名稱符號的元數據合併,並且當然可以包括密鑰:doc
。所以如果你想獲得「文檔字符串,如果有的話」,你需要查看名稱符號上的元數據,緊隨其後的表單(如果有的話;檢查它是字符串還是映射)並可能還有一種形式(如果文檔字符串作爲ns
的第二個參數給出;請檢查它是否爲地圖)。