मान लीजिए कि मुझे इस तरह एक एशोक-लिस्ट मिली है:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
और मुझे मूल्य चाहिए bar
। मे यह कर सकती हु:
(assoc-default 'bar (assoc-default 'foo x))
लेकिन जो मैं वास्तव में चाहूंगा वह ऐसा है जो कई कुंजियों को स्वीकार करता है, जैसे
(assoc-multi-key 'foo 'bar x)
क्या ऐसा कुछ मौजूद है, शायद एक पैकेज में कहीं? मुझे यकीन है कि मैं इसे लिख सकता हूं, लेकिन मुझे लगता है कि मेरा Google-फू अभी असफल हो रहा है और मैं इसे नहीं पा सकता हूं।
setq
उदाहरण में भ्रमित करने वाले फॉर्म का मूल स्वरूपण भी मिला , इसलिए मैंने इसे एडो-सूचियों के लिए सामान्य डॉट-नोटेशन का उपयोग करने के लिए संपादित किया।
assoc-multi-key
अनिर्दिष्ट है।
assoc-multi-key
यह है कि पहली सूची को कुंजी-सूची में देखना है। यह एक नई assoc- सूची को हल करना चाहिए जिसमें हम अगली कुंजी को देखते हैं। इत्यादि। मूल रूप से नेस्टेड एशोक-लिस्ट से बाहर मूल्यों को खोदने के लिए एक छोटा-सा हाथ।
let-alist
हैं? जैसे (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
लौटेगा "llama"
। मुझे लगता है let-alist
कि सवाल पूछे जाने के बाद आपने लिखा था, लेकिन यह सवाल की भावना में है और बहुत ही ध्यान देने योग्य आईएमओ है!
assoc-multi-key
। संभवतः यह अपने पहले दो तर्कों के लिए दोनों के लिए मैच की तलाश में है, लेकिन यह वास्तव में वह सब है जो आप कह सकते हैं, जो आप कह सकते हैं। और यह स्पष्ट रूप से दो से अधिक कुंजियों को स्वीकार नहीं कर सकता है, क्योंकि अलिस्ट तर्क (संभवतःx
) अंतिम एक है, न कि पहला - जो बताता है कि यह सामान्य रूप से बहुत उपयोगी नहीं है। वास्तव में यह निर्दिष्ट करने का प्रयास करें कि आप क्या खोज रहे हैं।