Припустимо, у мене є такий список асоцій:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
І я хочу значення bar
. Я можу зробити це:
(assoc-default 'bar (assoc-default 'foo x))
Але те, що мені дуже хотілося, - це те, що приймає кілька клавіш, наприклад
(assoc-multi-key 'foo 'bar x)
Чи існує така річ, можливо, в пакеті десь? Я впевнений, що міг би це написати, але відчуваю, що мій Google-фу просто не працює, і я не можу його знайти.
setq
в прикладі заплутане, тому я відредагував його, щоб використовувати загальну точку-позначення для списків асоцій.
assoc-multi-key
залишається невизначеним.
assoc-multi-key
тому, щоб знайти перший ключ у списку асоцій. Це має вирішити новий список асоцій, в якому ми шукаємо наступний ключ. І так далі. В основному це короткий порядок для перекопування значень з вкладених списків асоцій.
let-alist
? наприклад (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
повернеться "llama"
. Я думаю, ви писали let-alist
після того, як питання було задано, але це в дусі запитання і дуже варто згадати ІМО!
assoc-multi-key
. Імовірно, він шукає збіги обох своїх перших двох аргументів, але це дійсно все, що можна було припустити, з того, що ви сказали. І явно не може прийняти більше двох ключів, оскільки аллістний аргумент (імовірноx
) є останнім, а не першим - що говорить про те, що він не надто корисний в цілому. Спробуйте насправді вказати, що ви шукаєте.