F: Wie lässt sich eine Funktion idiomatisch auf eine Eigenschaftsliste abbilden?
Die verschiedenen Zuordnungsfunktionen ( mapcar
und die Familie) ordnen eine Funktion über eine Sequenz wie eine Liste zu. Wie verwendet man diese Funktionen, wenn man mit einer Eigenschaftsliste umgeht, dh wenn versucht wird, alle in der Liste enthaltenen Eigenschaften (die jedes andere Element ab dem ersten sein würden) zuzuordnen? Es scheint mir, dass die Zuordnungsfunktion auf die Liste in Paaren von Elementen und nicht als einzelne Elemente zugreifen müsste.
Wie würde man als Spielzeugbeispiel eine Eigenschaftsliste nehmen und alle Eigenschaftswerte sammeln? Wenn es stattdessen eine Assoziationsliste wäre, wäre es ziemlich einfach:
(mapcar #'cadr '((:prop1 a) (:prop2 b) (:prop3 c))) ;=> (a b c)
Ich bin mir sicher, dass dies mit einer Schleife möglich ist, aber es scheint ein wenig mühsam zu sein, und ich frage mich, ob es einen idiomatischeren Weg gibt, dies zu tun.
mapcar
Alist-Beispiel tut) oder ob Sie die Paare von Eigenschaftssymbol und Eigenschaftswert abbilden möchten. Letzteres ist allgemeiner (allgemeiner nützlich), würde ich vermuten.