मुझे एहसास है कि निम्नलिखित कारणों से निम्नलिखित एक बुरा विचार है। मुझे यह भी एहसास हुआ कि मेरे पास 23 का स्टैक ओवरफ्लो प्रतिनिधि है, यह प्रकृति है कि मैं प्रोग्राम के लिए एक नया सीख रहा हूं। हालांकि, कृपया मुझे हास्य दें, और "आप ऐसा क्यों करना चाहते हैं" के बजाय "हम यह कैसे कर सकते हैं" पर ध्यान केंद्रित करें।क्लोजर गतिशील बाध्यकारी
मुझे क्या करना चाहते हैं:
(def dog (Dog. ...))
(def cat (Cat. ...))
(with-animal dog
(println (str "Dog: " (speak) "\n")))
(with-animal cat
(println (str "Cat: " (speak) "\n")))
उत्पादन के लिए:
Dog: woof
Cat: meow
तो बुनियादी तौर पर, मैं साथ-पशुचाहते एक मैक्रो s.t. होने के लिए "बोलने" फ़ंक्शन कॉल के सभी अवसरों को उस ऑब्जेक्ट में मैप किया जाता है जिसे मैं ब्लॉक के साथ कॉल कर रहा हूं।
विशेष रूप से, मैं नहीं चाहता कि लिखना चाहते हैं:
(let-binding [speak (fn [] "woof")] ...)
(let-binding [speak (fn [] "meow")] ...)
बल्कि, मैं चाहता हूँ के साथ-पशु बनाने के लिए बात समारोह नक्शा वस्तु के साथ मैं फोन कर रहा हूँ करने के कुछ तरीके हैं।
क्लोजर में ऐसा करने का कोई साफ तरीका है?
धन्यवाद!
प्रोटोकॉल का उपयोग क्यों नहीं करते? – DanLebrero
मुझे अस्वीकरण पसंद आया :) – szymanowski