我有一组 URL,其中一些 URL 具有间接引用(作为向量)。任何没有间接引用的 URL 都只有nil
. 我从以下测试地图开始:
{"URL 1" nil,
"URL 2" ["indirect 1" "indirect 2"]}
我正在使用打嗝来构建 HTML 报告,所以我想要这个输出:
[:div "Imports: "
[:ul
[:li "URL 1"]
[:li "URL 2"]
[:ul
[:li "indirect 1"]
[:li "indirect 2"]
[:li "indirect 3"]]]]
当 URL 没有间接引用时,我遇到了一些返回 nil 的问题。我当前的代码如下所示:
(defn list-imports
[imports]
(if-not (nil? imports)
[:div "Imports: "
[:ul
(for [direct (keys imports)]
[[:li direct]
(if-let [indirects (get imports direct)]
[:ul
(for [indirect indirects]
[:li indirect])]
[:span])])]]
[:div "Imports: none" [:br] [:br]]))
问题是,它正在返回这个......
[:div
"Imports: "
[:ul
([[:li "URL 1"] [:span]]
[[:li "URL 2"] [:ul ([:li "indirect 1"] [:li "indirect 2"])]])]]
我必须添加一个[:span]
标签,以作为间接导入时的情况nil
,我真的不想在那里......但否则,它就会放在nil
那里。
另一个问题是它最终包含在()
一个额外的向量中,因为我在 for 语句中做了很多事情。当我尝试用打嗝转换它时,我得到[:li "URL 1"] is not a valid element name.