목록을 알리 스트 키로 사용할 수도 있습니다. 예,
(assoc '(1 2) '(((1 1) a) ((1 2) b) ((1 3) c)) :test #'equal)
==> ((1 2) B)
그래서, 당신은이 같은 자신의 나이를 설정할 수 있습니다 사람들
(defparameter *people* '((Ben Hofferber) (Adam Young)))
의 목록이있는 경우 :
(defparameter *ages* (mapcar #'list *people* '(20 11)))
과 같이 찾을 :
(assoc '(Ben Hofferber) *ages* :test #'equal)
==> ((BEN HOFFERBER) 20)
그러나 ifi 기호를 하나에 결합하는 방법에 대해 설명하고 싶습니다.
(defun combine-symbols (s1 s2)
(intern (concatenate 'string (symbol-name s1) "-" (symbol-name s2))
(symbol-package s1)))
을하지만, 서로 다른 패키지 (예를 들어, cl:car
및 cl-user::ben
)에있는 경우, 당신은을해야 할 것 :
모두 기호는 동일한 패키지에있는 경우, 결합 된 기호는 너무 거기에 배치 할 수 있습니다 함께 가기에 힘든 선택.
또는, 문자열을 가서
(defun combine-objects (o1 o2)
(format nil "~A-~A" o1 o2))
이
assoc
에
:test #'equal
또는
:test #'string=
을 통과하는 것을 잊지 마세요 사용할 수 있습니다.
출처
2013-04-29 00:09:59
sds
목록의 요소가 될 수있는 내용과 "결합"의 의미를 지정해야합니다. 예를 들어, 서로 다른 패키지의 두 기호를 결합하는 방법은 무엇입니까? – sds
기본적으로 목록의 두 요소의 데이터를 하나의 요소에 결합하려고합니다. 그래서 '(Ben Hofferber)에서'(Ben_Hofferber)까지 cdr은 Hofferber 대신에 nil을 리턴 할 것입니다. – Hoffination
당신은 내 질문에 대답하지 않았다 : 기호 cl : 자동차와 기호 cl-user :: Ben을 어떻게 결합하고 싶습니까? – sds