Załóżmy, że mam taką listę assoc:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
I chcę wartość na bar
. Mogę to zrobić:
(assoc-default 'bar (assoc-default 'foo x))
Ale tak naprawdę chciałbym coś, co akceptuje wiele kluczy
(assoc-multi-key 'foo 'bar x)
Czy coś takiego istnieje, może gdzieś w paczce? Jestem pewien, że mógłbym to napisać, ale wydaje mi się, że mój Google-fu po prostu zawodzi i nie mogę go znaleźć.
setq
formularza w tym przykładzie mylące, więc edytowałem go, aby użyć wspólnej notacji kropkowej dla list assoc.
assoc-multi-key
pozostaje nieokreślone.
assoc-multi-key
sprawdzenie pierwszego klucza na liście assoc. To powinno rozwiązać nową listę assoc, w której sprawdzamy następny klucz. I tak dalej. Zasadniczo skrót do wykopywania wartości z zagnieżdżonych list assoc.
let-alist
też wspomnieć ? np . (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
wróci "llama"
. Wydaje mi się, że napisałeś let-alist
po zadaniu pytania, ale jest ono zgodne z duchem pytania i warto wspomnieć o IMO!
assoc-multi-key
. Przypuszczalnie szuka dopasowania do obu pierwszych dwóch argumentów, ale tak naprawdę można przypuszczać na podstawie tego, co powiedziałeś. I najwyraźniej nie może zaakceptować więcej niż dwóch kluczy, ponieważ argument alist (przypuszczalniex
) jest ostatnim, a nie pierwszym - co sugeruje, że ogólnie nie jest zbyt użyteczny. Spróbuj właściwie określić, czego szukasz.