यह एक ऐसा पैटर्न है जिसे किसी भी भाषा पर लागू किया जा सकता है, बशर्ते कि भाषा एक ऐसे वातावरण के साथ लिखी गई हो जो कोड के ब्लॉक से जुड़े नामों को पुन: असाइन करने की अनुमति दे।
कंप्यूटर में, कोड और डेटा मेमोरी में मौजूद है। प्रोग्रामिंग भाषाओं में, हम स्मृति के उन "भाग" को संदर्भित करने के लिए नामों का उपयोग करते हैं।
मेमोरी "ए" की कुछ बाइट्स "नाम" देगा। यह भी प्रकार सिस्टम के आधार पर 0 पर "निर्दिष्ट" होता है कि स्मृति बाइट मूल्य इसी,
int add(int first, int second) {
return first + second;
}
"नाम" स्मृति के कुछ बाइट्स से "जोड़ें" होगा। यह उस स्मृति को दो "int" संख्याओं के लिए कॉल स्टैक को देखने के लिए मशीन निर्देशों को शामिल करने के लिए "असाइन" करेगा, उन्हें एक साथ जोड़ देगा, और परिणाम को कॉल स्टैक पर उचित स्थान पर रखेगा।
एक प्रकार की प्रणाली में जो नामों को ब्लॉक करने के लिए नामों को अलग करता है (और रखता है), अंत परिणाम यह है कि आप आसानी से संदर्भ के चारों ओर कोड के ब्लॉक को पास कर सकते हैं, वैसे ही आप संदर्भ के आधार पर स्मृति को बदल सकते हैं। कुंजी यह सुनिश्चित करने के लिए है कि टाइप सिस्टम केवल संगत प्रकारों से मेल खाता है, अन्यथा कोड के ब्लॉक के चारों ओर गुजरने से त्रुटियां उत्पन्न हो सकती हैं (जैसे मूल रूप से एक int को वापस करने के लिए परिभाषित किया जाता है)।
जावा में, सभी प्रकार "हस्ताक्षर" को हल करते हैं जो विधि नाम और "प्रकार" का एक स्ट्रिंग प्रतिनिधित्व है। प्रदान की ऐड उदाहरण को देखते हुए, हस्ताक्षर
// This has a signature of "add(I,I)I"
int add(int first, int second) {
return first + second;
}
तो जावा समर्थित (के रूप में Clojure करता है) विधि नाम असाइनमेंट, वह अपने घोषित प्रकार प्रणाली के नियमों पर विस्तार, और विधि नाम असाइनमेंट अनुमति देने के लिए होता है।विधि असाइनमेंट की एक नकली उदाहरण तार्किक तरह
subtract = add;
लगेगा लेकिन यह एक जोरदार लिखा जाता है (जावा मैच के लिए) "प्रकार" के साथ, घटाना घोषित करने के लिए की जरूरत की आवश्यकता होगी।
public subtract(I,I)I;
और बिना किसी देखभाल के, ऐसी घोषणाएं आसानी से भाषा के पहले से परिभाषित भागों पर चल सकती हैं।
लेकिन आपके उत्तर पर वापस जाने के लिए, ऐसे भाषाओं में जो मूल रूप से कोड के ब्लॉक के लिए पॉइंटर्स हैं, और फिर से असाइन किया जा सकता है बशर्ते आप इनपुट और रिटर्न पैरामीटर की अपेक्षाओं को तोड़ न दें।
प्रासंगिक: https://en.wikipedia.org/wiki/Dynamic_software_updating – user