忽略maphash lambda函数中的参数

时间:2014-11-03 16:09:44

标签: lisp common-lisp

我有以下内容,我正在使用maphash迭代一个hashmap。处理hashmap中每个元素的lambda函数接收两个参数,一个键和一个值。但我从不使用该值,因此,在编译时我会收到警告。我该如何修复此警告?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

Rainer已经指出(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)