1

我已经为一个问题苦苦挣扎了好几个小时……我想用两个序列的值建立一个链接。

(doseq [item photoset-name] (prn item ))
(doseq [item-name photoset-id] (prn item-name ))

输出:

"AlbumTitel2"
"test"
"AlbumTitel"
"album123"
"speciale"
"neues B5 Album"
"Album Nr 2"
"72157632764328569"
"72157632769231530"
"72157632769092584"
"72157632768156156"
"72157632762740183"
"72157632724688181"
"72157632760876608"

现在我想建立一个这样的链接(对于每个 id/name):

<a href="http://example.com?id=72157632764328569">AlbumTitel2</a>

它应该是一个序列或映射......不过我可以迭代的任何东西。

有谁知道如何存档?

谢谢!

4

2 回答 2

2
(map #(str "<a href=\"http://example.com?id="
           %1
           "\">"
           %2
           "</a>") photoset-ids photoset-names)
于 2013-08-07T20:59:21.170 回答
1

您可以尝试通过以下两种方式之一使用地图(我目前手边没有 Clojure,因此无法验证):

(map #(prn "<a href=\"" %1 "\">" %2 "</a>") item item-name)

或者

(doseq [pair (map vector item item-name)]
  (prn "<a href=\"" (first pair) "\">" (second pair) "</a>"))

编辑:小心使用map;它很懒,所以如果你不使用它返回的结果,那么它实际上可能不会运行!

这也可能有效:

(doseq [[url title] (map vector item item-name)]
  (prn "<a href=\"" url "\">" title "</a>"))

将多个列表中的项目组合成单个列表中的对通常称为“压缩”。(map vector ...)我在这个答案中找到的

于 2013-08-07T20:57:47.660 回答