Misalkan saya punya daftar assoc seperti ini:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
Dan saya ingin nilainya bar
. Aku bisa melakukan ini:
(assoc-default 'bar (assoc-default 'foo x))
Tapi yang saya benar-benar suka adalah sesuatu yang menerima banyak kunci
(assoc-multi-key 'foo 'bar x)
Apakah hal semacam itu ada, mungkin dalam suatu paket di suatu tempat? Saya yakin saya bisa menulisnya, tetapi saya merasa Google-fu saya gagal dan saya tidak dapat menemukannya.
setq
formulir dalam contoh membingungkan, jadi saya mengeditnya untuk menggunakan notasi titik umum untuk daftar-assoc.
assoc-multi-key
tetap tidak ditentukan.
assoc-multi-key
adalah mencari kunci pertama dalam daftar asosiasi. Ini harus menyelesaikan ke daftar asosiasi baru di mana kita mencari kunci selanjutnya. Dan seterusnya. Pada dasarnya pekerjaan singkat untuk menggali nilai dari daftar assoc-nested.
let-alist
juga? misalnya (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
akan kembali "llama"
. Saya kira Anda menulis let-alist
setelah pertanyaan diajukan, tetapi itu dalam semangat pertanyaan dan sangat layak disebut IMO!
assoc-multi-key
. Agaknya ia mencari kecocokan dengan kedua argumen pertama, tapi hanya itu yang bisa diduga, dari apa yang Anda katakan. Dan jelas tidak dapat menerima lebih dari dua kunci, karena argumen alist (mungkinx
) adalah yang terakhir, bukan yang pertama - yang menunjukkan bahwa itu tidak terlalu berguna secara umum. Cobalah sebutkan apa yang Anda cari.