Angenommen, ich habe eine Assoc-Liste wie diese:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
Und ich möchte den Wert bei bar
. Ich kann dies tun:
(assoc-default 'bar (assoc-default 'foo x))
Aber was ich wirklich möchte, ist etwas, das mehrere Schlüssel akzeptiert, wie z
(assoc-multi-key 'foo 'bar x)
Existiert so etwas vielleicht in einem Paket irgendwo? Ich bin mir sicher, dass ich es schreiben könnte, aber ich habe das Gefühl, dass mein Google-Fu einfach ausfällt und ich es nicht finden kann.
setq
Formulars im Beispiel verwirrend, also habe ich es bearbeitet, um die allgemeine Punktnotation für Assoc-Listen zu verwenden.
assoc-multi-key
bleibt unbestimmt.
assoc-multi-key
geht darum, den ersten Schlüssel in der Assoc-Liste nachzuschlagen. Dies sollte sich in eine neue Assoc-Liste auflösen, in der wir den nächsten Schlüssel nachschlagen. Und so weiter. Grundsätzlich eine Abkürzung zum Ausgraben von Werten aus verschachtelten Assoc-Listen.
let-alist
? zB (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
wird zurückkehren "llama"
. Ich denke, Sie haben geschrieben, let-alist
nachdem die Frage gestellt wurde, aber es ist im Geiste der Frage und sehr erwähnenswert, IMO!
assoc-multi-key
. Vermutlich sucht es nach Übereinstimmungen mit den beiden ersten Argumenten, aber das ist wirklich alles, was man von dem, was Sie gesagt haben, annehmen könnte. Und es kann eindeutig nicht mehr als zwei Schlüssel akzeptieren, da das alistische Argument (vermutlichx
) das letzte und nicht das erste ist - was darauf hindeutet, dass es im Allgemeinen nicht allzu nützlich ist. Versuchen Sie tatsächlich anzugeben, wonach Sie suchen.