2013-12-20 37 views

回答

4

讀者的元數據附加到一個表單在讀

在您的示例中的引號形式的格式不正確作爲Clojure的代碼(即,甚至不考慮它是。特別是ns表單),因爲元數據映射沒有任何要附加到的內容。固定版本可能是(ns ^{:doc "docstring"} foo)。這裏foo成爲ns的(必填)「名稱」參數。

現在,你可以簡單地從ns形式使用,也就是說,second提取符號foo並讀取其元數據映射:

(-> '(ns ^{...} foo) second meta) 

注意,對於命名空間的文檔字符串可以在一個額外的參數的形式提供ns

(ns foo 
    "foo's docstring" 
    ...) 

另外,一個附加的「屬性映射」,如果一個在該形式給出可以被提供作爲一個額外的參數(文檔字符串之後,在名S後,立即其他符號)。該屬性圖將與名稱符號的元數據合併,並且當然可以包括密鑰:doc。所以如果你想獲得「文檔字符串,如果有的話」,你需要查看名稱符號上的元數據,緊隨其後的表單(如果有的話;檢查它是字符串還是映射)並可能還有一種形式(如果文檔字符串作爲ns的第二個參數給出;請檢查它是否爲地圖)。