Giả sử tôi có một danh sách PGS như thế này:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
Và tôi muốn giá trị tại bar
. Tôi có thể làm điều này:
(assoc-default 'bar (assoc-default 'foo x))
Nhưng điều tôi thực sự thích là thứ gì đó chấp nhận nhiều khóa, như
(assoc-multi-key 'foo 'bar x)
Liệu một điều như vậy tồn tại, có lẽ trong một gói ở đâu đó? Tôi chắc chắn rằng tôi có thể viết nó, nhưng tôi cảm thấy như Google-fu của tôi đang thất bại và tôi không thể tìm thấy nó.
setq
biểu mẫu trong ví dụ khó hiểu, vì vậy tôi đã chỉnh sửa nó để sử dụng ký hiệu chấm phổ biến cho danh sách PGS.
assoc-multi-key
vẫn chưa được xác định.
assoc-multi-key
là tìm kiếm khóa đầu tiên trong danh sách PGS. Điều này sẽ giải quyết một danh sách PGS mới trong đó chúng tôi tìm khóa tiếp theo. Và kể từ đó trở đi. Về cơ bản là một tay ngắn để đào các giá trị ra khỏi danh sách PGS lồng nhau.
let-alist
? ví dụ (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
sẽ trở lại "llama"
. Tôi đoán bạn đã viết let-alist
sau khi câu hỏi được hỏi, nhưng đó là trên tinh thần của câu hỏi và rất đáng đề cập đến IMO!
assoc-multi-key
. Có lẽ nó tìm kiếm sự trùng khớp với cả hai đối số đầu tiên của nó, nhưng đó thực sự là tất cả những gì người ta có thể cho là, từ những gì bạn đã nói. Và rõ ràng nó không thể chấp nhận nhiều hơn hai khóa, vì đối số alist (có lẽ làx
) là khóa cuối cùng, không phải là khóa đầu tiên - điều này cho thấy rằng nó không quá hữu ích nói chung. Hãy thử thực sự xác định những gì bạn đang tìm kiếm.