1
誰能解釋我這個Clojure的功能Clojure功能說明。
(defn to-list [{:keys [key left right] :as tree}]
(when tree
`([email protected](to-list left) ~key [email protected](to-list right))))
誰能解釋我這個Clojure的功能Clojure功能說明。
(defn to-list [{:keys [key left right] :as tree}]
(when tree
`([email protected](to-list left) ~key [email protected](to-list right))))
的stets所以to-list
函數需要map有一些三個按鍵,分別是key
,left
和right
的。該地圖也可以通過名稱tree
訪問。有關參數解構,請參見this。然後你有一個語法報價(詳見this)。這大致相當於
(clojure.core/seq (clojure.core/concat (to-list left)
(clojure.core/list key)
(to-list rirght)))
所以基本上,如果你有nil
的樹,它會返回nil
(這似乎是合理的)。如果您有一棵帶有密鑰left
的樹(它可以是零,也可以是可能帶有密鑰key
,left
和right
的地圖),則遞歸地打印左樹,然後添加密鑰,然後如果您有密鑰right
,則遞歸地打印右樹。如果在任何一步你只剩下或只有權利,電話(to-list left)
將產生零,其餘的將如已解釋的那樣工作。
我希望這會有所幫助。
注意我現在沒有clojure repl,所以我沒有測試什麼是語法引用的確切等價物,但它應該與我寫的東西非常類似。
具體是什麼部分是你不明白? –
'(〜@(待列表左)〜key〜@(待列表右)))) –