initialize मेथड रूबी में ऑब्जेक्ट-क्रिएशन प्रक्रिया का हिस्सा है और यह आपको ऑब्जेक्ट के लिए प्रारंभिक मान सेट करने की अनुमति देता है।
अन्य प्रोग्रामिंग भाषाओं में इसे "कंस्ट्रक्टर" कहा जाता है।
उदाहरण के लिए:
मान लें कि आपके पास एक Point क्लास है, इस पॉइंट को दो कोऑर्डिनेट्स, x और y की आवश्यकता है।
आप इन मानों को ऑब्जेक्ट में कैसे पास करने जा रहे हैं?
इस तरह:
Point.new(10, 20)
new मेथड रूबी में Point जैसी क्लास से या किसी अन्य क्लास से जिसे आप एक्सेस कर सकते हैं, नए ऑब्जेक्ट्स बनाने का तरीका है।
New और Initialize के बीच संबंध
इन दो आर्गुमेंट्स, 10 और 20 पर ध्यान दें?
यहाँ हम initialize मेथड पर वापस आते हैं।
यदि आप new में आर्गुमेंट्स पास करने की कोशिश करते हैं और यदि आप initialize परिभाषित नहीं करते हैं तो आपको एरर मिलेगी:
ArgumentError: wrong number of arguments (2 for 0)
क्योंकि जब आप new कॉल करते हैं, तो रूबी initialize कॉल करता है!
आपको इसकी आवश्यकता है:
class Point def initialize(x, y) end end
अब आप दो आर्गुमेंट्स के साथ Point ऑब्जेक्ट्स बना सकते हैं।
इसलिए initialize का पूरा उद्देश्य आपको आर्गुमेंट्स के साथ ऑब्जेक्ट्स बनाने की अनुमति देना है।
आर्गुमेंट्स को सेव करना
initialize में पास किए गए आर्गुमेंट्स ऑटोमैटिकली कहीं सेव नहीं होते।
आपको इंस्टेंस वेरिएबल्स का उपयोग करके ऐसा करना होगा:
class Point
def initialize(x, y)
@x = x
@y = y
end
end
यह x और y के मानों को इंस्टेंस वेरिएबल्स (@x और @y) में असाइन करेगा ताकि आप उन्हें बाद में एक्सेस कर सकें।
initialize के बारे में कुछ ध्यान देने योग्य बातें:
- आप वैकल्पिक और डिफ़ॉल्ट आर्गुमेंट्स परिभाषित कर सकते हैं
- इस मेथड के अंदर
returnका उपयोग करना कोई मतलब नहीं रखता क्योंकि यह विशेष है और यह हमेशा एक नया ऑब्जेक्ट लौटाएगा initializeपरिभाषित करना आवश्यक नहीं है यदि आपकी क्लास को आर्गुमेंट्स की आवश्यकता नहीं है
आप initialize के अंदर अन्य मेथड्स कॉल कर सकते हैं, लेकिन आप यहां उस काम से आगे कोई वास्तविक काम नहीं करना चाहते जो ऑब्जेक्ट को उपयोग के लिए तैयार करने के लिए आवश्यक है।
उदाहरण के लिए:
यदि आपकी क्लास Github API के साथ काम करने के बारे में है, तो आप पहले से API के सभी संभावित अनुरोधों को प्री-लोड नहीं करना चाहेंगे।
आप बस API कुंजी को इंस्टेंस वेरिएबल में सेव करना चाहेंगे।
या जो भी डेटा आपकी क्लास को चाहिए।
हैश और अन्य बिल्ट-इन ऑब्जेक्ट्स को इनिशियलाइज़ करना
हैश जैसे बिल्ट-इन ऑब्जेक्ट्स के पास new कॉल करने के अलावा उन्हें इनिशियलाइज़ और बनाने के विशेष तरीके हैं।
हैश बनाने के तरीके:
h = Hash.new
h = Hash['a', 1]
h = {}
स्ट्रिंग बनाने के तरीके:
s = String.new s = "" s = %Q()
ऐरे बनाने के तरीके:
a = Array.new(5) a = %w(a b c) a = []
%w स्ट्रिंग्स की एक ऐरे बनाता है।
सारांश
आपने रूबी initialize मेथड के बारे में सीखा, यह new मेथड से कैसे संबंधित है, और रूबी में ऑब्जेक्ट क्रिएशन की मूल बातें।
रूबी में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के इस परिचय को पढ़कर सीखते रहें।
पढ़ने के लिए धन्यवाद!