如何在 Clojure 的类似 Hiccup 的数据结构中优雅地呈现菜单项的条件列表?我的模板函数最终被调用into
和不自然地读取。
期望的结果:
[:div.menu
[:div.item "Home"]
[:div.item "Private"]
[:div.item "Private"]
[:div.item "Public"]
如果我将私有项目放在一个 中if
,我仍然需要展开返回的向量,或者处理nil
,所以这不起作用:
[:div.menu
[:div.item "Home"]
(if authenticated?
[[:div.item "Private"]
[:div.item "Private"]])
[:div.item "Public"]]
我发现我可以使用(into [:div.menu] ...)
并传入一个项目列表,但它很笨重,而且不自然地阅读。我最终得到了这个表达式:
(-> [:div.menu
[:div.item "Home"]]
(into (if (auth/authenticated?)
[[:div.item "Private"]
[:div.item "Private"]]
(into [[:div.item "Public"]]))
有没有更好的办法?