【发布时间】:2016-07-07 09:44:13
【问题描述】:
如何在 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"]]))
有没有更好的办法?
【问题讨论】: