Diyelim ki böyle bir dernek listem var:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
Ve değerini istiyorum bar
. Bunu yapabilirim:
(assoc-default 'bar (assoc-default 'foo x))
Ama gerçekten istediğim, birden fazla anahtarı kabul eden bir şey,
(assoc-multi-key 'foo 'bar x)
Böyle bir şey, belki de bir yerlerde bir pakette var mı? Eminim yazabilirim, ancak Google-fu'mun başarısız olduğunu ve bulamıyorum gibi hissediyorum.
setq
Formun orijinal biçimlendirmesini kafa karıştırıcı örnekte de buldum , bu yüzden dolandırıcılık listeleri için ortak nokta gösterimini kullanmak için düzenledim.
assoc-multi-key
belirtilmemiş.
assoc-multi-key
, listedeki ilk anahtara bakmak. Bu, bir sonraki anahtarı aradığımız yeni bir dernek listesine çözümlenmelidir. Ve böylece. Temelde, iç içe yerleştirilmiş listelerden değerleri kazmak için kullanılan bir kısa el.
let-alist
? örneğin (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
dönecektir "llama"
. Sanırım let-alist
soru sorulduktan sonra yazdınız, ama sorunun ruhunda ve IMO'dan bahsetmeye değer!
assoc-multi-key
. Muhtemelen ilk iki argümanının her ikisiyle de eşleşiyor, ancak söylediklerinizden birinin gerçekten tahmin edebileceği şey bu. Ve açıkça ikiden fazla anahtarı kabul edemez, çünkü alist argümanı (muhtemelenx
) birincisi değil sonuncusu - bu genel olarak çok kullanışlı olmadığını düşündürüyor. Gerçekten ne aradığınızı belirtmeyi deneyin .