Có kinh nghiệm lập trình lisp, lược đồ, clojure chuyển sang elisp từ python để tự động hóa các công việc cơ bản, hàng ngày, cơ bản: Tôi đã có một bất ngờ lớn từ những điều sau đây ielm
ELISP> (setq h2 (make-hash-table))
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ())
ELISP> (puthash "a" 1 h2)
1 (#o1, #x1, ?\C-a)
ELISP> (gethash "a" h2)
nil
Huh? Khóa và giá trị dường như có mặt:
ELISP> h2
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("a" 1))
/ tát trán. Tôi phải thiếu một cái gì đó hoàn toàn rõ ràng. Thông tin nói:
-- Function: gethash key table &optional default
This function looks up KEY in TABLE, and returns its associated
VALUE—or DEFAULT, if KEY has no association in TABLE.
tuyệt quá. Hãy xem liệu chúng ta có thể gethash
trả lại bất cứ thứ gì ngoài nil
:
ELISP> (gethash "a" h2 'fubar)
fubar
ồ Ok, tôi rất ngốc hơn tôi nghĩ. Tôi đang làm gì vậy?
:test
tham số trong ví dụ của mình ...