1

我正在搞乱网络开发,并想做如下的事情:

(defun col1 (&rest content) `((:DIV :CLASS "col1") 
                              (:COMMENT " Column 1 start ")
                              ,content goes here
                              (:COMMENT " Column 1 end ")))

其中 content 是函数返回的两个或多个列表:

(defun two-list () ....)

那会回来的

'(:H2 "header")
'(:P "paragraph")

以便

(col1 (two-list))

会回来

((:DIV :CLASS "col1") 
 (:COMMENT " Column 1 start ")
 (:H2 "header")
 (:P "paragraph")
 (:COMMENT " Column 1 end "))    

我尝试过使用 values 函数,但它似乎只将一个列表嵌入到内容区域中。有可能做这样的事情吗?感谢 lispers 的帮助,我在学习如何使用 Lisp 时玩得很开心!

4

1 回答 1

4

两个列表如何返回您要嵌入的元素列表,例如((:H2 "header")(:P "paragraph")),然后col1可以定义为:

(defun col1 (content) `((:DIV :CLASS "col1") 
                              (:COMMENT " Column 1 start ")
                              ,@content ; goes here
                              (:COMMENT " Column 1 end ")))

(defun two-list () '((:H2 "header")(:P "paragraph")))

请注意,我&rest从 col1 中删除了。如果你还想拥有你需要做的,(apply #'col1 (two-list))而不是(col1 (two-list))

于 2013-09-11T00:26:29.763 回答