2014-11-03 4 views
1

다음과 같은 사항이 있습니다. maphash를 사용하여 hashmap을 반복합니다. 해시 맵의 각 요소를 처리하는 람다 함수는 키와 값이라는 두 개의 인수를받습니다. 그러나 나는 값을 사용하지 않는다. 그래서 컴파일 할 때 나는 경고를 받는다. 이 경고는 어떻게 수정합니까?maphash 람다 함수에서 인수를 무시합니다.

답변

2
? (defun foo (a b) (+ a 2)) 
;Compiler warnings : 
; In FOO: Unused lexical variable B 
FOO 

? (defun foo (a b) 
    (declare (ignore b)) 
    (+ a 2)) 
FOO 
2

라이너의 이미 지적 (실제로, 이미 다른 문제의 존재)을 (declare (ignore ...)). 해시 테이블 키 (또는 값)를 반복하는 다른 방법에 관심이 있다면 loop을 사용할 수 있습니다.

(let ((table (make-hash-table))) 
    (dotimes (x 5) 
    (setf (gethash x table) (format nil "~R" x))) 
    (values 
    (loop for value being each hash-value of table 
     collect value) 
    (loop for key being each hash-key of table 
     collect key))) 
;=> 
; ("zero" "one" "two" "three" "four") 
; (0 1 2 3 4) 
관련 문제