1
我想使用tinsel HTML template library刪除節點,如果用戶是零,但我很難搞清楚如何評估條件,因爲一切都基於宏。檢查基於clojure /金屬箔模板宏參數的條件
此版本不起作用,因爲它在編譯期間將user
評估爲'user
表單,因爲它不是零,所以難以設置真正的分支,也不會重新評估。 (如果這不是很正確,請隨意糾正我的術語)。
(tc/deftemplate folder-list
(tc/html-document (slurp "resources/templates/folders.html"))
[user]
(tc/id= :mnuUsers)
(fn [node] (do (prn 'user) (if 'user node nil))))
下面是我得到的最接近,這事實上確實打印在渲染時,而不是編譯時的用戶,並正確分支機構,但拋出一個錯誤,說無法解析符號node
。
(tc/deftemplate folder-list
(tc/html-document (slurp "resources/templates/folders.html"))
[user]
(tc/id= :mnuUsers)
(fn [node] '(do (prn user) (if user node nil))))
作品!是否可以創建一個宏'hide-if',這樣我就可以使用'(hide-if(nil?user))'作爲最後一種形式? –
明白了:''(defmacro hide-if [b](fn [node]'(if〜b nil〜node)))''。如有可能,請隨意簡化或生成。 –
奇怪的是,*工作*(在repl中),但沒有*編譯*(使用'lein compile'),這對我來說似乎沒有任何意義,儘管如此。以下編譯也是如此。 ''(defmacro hide-if [b](let [b#b]'(fn [node#](list'if(quote〜b#)nil node#))))''。 –