कई अवसरों में मेरे पास ऐसे कार्यों का संग्रह है जिन्हें मैं विभिन्न तरीकों से कार्यान्वित करना चाहता हूं। इसका सबसे स्पष्ट उदाहरण विशिष्ट डेटाबेस से सार होना होगा। एक वस्तु उन्मुख भाषा में आप इसके लिए इंटरफ़ेस का प्रयोग करेंगे:क्लोजर में सार फ़ंक्शन या फ़ंक्शन इंटरफेस?
interface DB {
ResultSet query(String query);
void persist(Object o);
...
}
speudo कोड में मैं इस तरह कुछ करना चाहता हूँ होगा: प्रत्येक डेटाबेस के लिए
(ns dbbackend)
(abstractfn query [q])
(abstractfn persist! [o])
और फिर कार्यान्वयन:
(ns dbbackend.mysql :implements dbbackend)
(defn query [q] ...)
(defn persist! [o] ...)
यह मेरे लिए बिल्कुल स्पष्ट नहीं है कि एक कार्यात्मक भाषा, विशेष रूप से क्लोजर में कुछ ऐसा करने का सबसे अच्छा अभ्यास क्या है। क्या मुझे इसके लिए बहु-तरीकों का उपयोग करना चाहिए?
बहुआयामी मेरे लिए एक उचित अच्छे मैच की तरह दिखते हैं, शायद एकमात्र। लेकिन मैं क्लोजर पर कोई विशेषज्ञ नहीं हूं इसलिए मैं एक "असली" उत्तर स्वयंसेवक नहीं करूंगा। अच्छे प्रश्न के लिए +1, हालांकि! रोचक जानकारी के लिए –