2014-12-27 6 views

Antwort

6

Association lists sind die am häufigsten verwendeten assoziativen Container in elisp. Es ist nur eine Liste von Schlüssel-Wert-Cons-Zellen wie diese ((key . value)). Sie können die Funktion verwenden, um einen Wert zu erhalten, der einem Schlüssel entspricht, und rassoc, um einen Schlüssel mit dem erforderlichen Wert zu erhalten.

Elisp kommt mit der eingebauten Funktion mapcar die Karte, aber AFAIK gibt es keine gute fold Einrichtung. Sie können es mit den bereitgestellten Looping-Funktionen emulieren. Die bessere Lösung ist jedoch, cl-lib zu verwenden und in CommonLisp Land zu schlüpfen. Insbesondere sind it suppliescl-mapcar und cl-reduce.

+0

Pradhan, um Wert von einer Karte zu erhalten, kann man assq (oder) assoc? –

+0

Normalerweise ist 'assoc' sinnvoll, weil die Tasten mit' equal' verglichen werden. Auf der anderen Seite vergleicht "assq" mit "eq", was erfordert, dass sie das exakt gleiche Objekt im Speicher sind. – Pradhan

7

Neben Assoziationslisten (deren algorithmische Komplexität ist für kleine Tische in Ordnung, aber nicht für große), gibt es Hash-Tabellen können Sie konstruieren mit make-hash-table und puthash, oder wenn Sie unmittelbare Werte bevorzugen, können Sie sie als #s(hash-table data a 1 b 2) schreiben .