2
我試圖遍歷一個序列,有條件地對每個元素執行一個操作,然後收集它(但只有當它匹配條件時)。這裏是工作的一個簡單的例子,我只是想知道這是否是正確的或口齒不清最佳實踐:有條件的指代收集最佳實踐?
(loop for n in '(1 2 3 4 5)
when (when (equal (mod n 2) 0) n)
collect it)
產生
(2 4)
這個工作,它只是看起來很滑稽對我來說並沒有那麼很多時候,但是因爲我覺得我不得不操縱條件返回我想要的東西。我得到的指示它作品的評估時,但這似乎有點人爲我。我錯過了什麼嗎?我只有幾個星期的時間。
編輯:其實,當我嘗試應用這個時,我有點困惑。我真正想要做的是這樣的:
(loop for n in '(1 2 3 4 5)
when (when (equal (mod n 2) 0) n)
collect it
do (format t "~A" it))
但第二它似乎成爲無約束...我該怎麼做?
要比較數字,您可以使用=或EQL。 – 2011-01-30 19:13:21