Procs
पुनःउपयोग योग्य block objects
Procs, CoddyKit पर Ruby Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Ruby Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
फिर से उपयोग किए जा सकने वाले ब्लॉक ऑब्जेक्ट
ब्लॉक अपने आप में कोई ऑब्जेक्ट नहीं होता, इसलिए आप उसे किसी वेरिएबल में संग्रहीत नहीं कर सकते। प्रोक किसी ब्लॉक को एक वास्तविक ऑब्जेक्ट में लपेटता है, जिसे आप सहेज सकते हैं, इधर-उधर भेज सकते हैं और बाद में चला सकते हैं।
greeter = Proc.new { puts "Hello!" }
greeter.call
greeter.callप्रोक बनाना
किसी Proc को बनाने के दो सामान्य तरीके हैं: Proc.new { ... } और छोटा proc { ... } कर्नेल विधि। दोनों एक ही प्रकार का ऑब्जेक्ट बनाते हैं।
double = proc { |x| x * 2 }
p double.call(5)प्रोक चलाना
आप किसी Proc को कई तरीकों से चला सकते हैं: .call, .() और वर्ग-कोष्ठक वाला संक्षिप्त रूप [ ]। ये सभी समान हैं।
square = proc { |x| x * x }
puts square.call(4)
puts square.(4)
puts square[4]प्रोक आर्ग्युमेंट लेते हैं
प्रोक्स ब्लॉक्स की तरह ही पैरामीटर स्वीकार करते हैं; इन्हें पाइप के बीच घोषित किया जाता है।
add = proc { |a, b| a + b }
puts add.call(3, 7)ऐरे में प्रोक संग्रहीत करना
प्रोक्स ऑब्जेक्ट होते हैं, इसलिए आप व्यवहारों का एक संग्रह रख सकते हैं और उन्हें बारी-बारी से चला सकते हैं।
ops = [proc { |x| x + 1 }, proc { |x| x * 2 }]
result = 5
ops.each { |op| result = op.call(result) }
puts resultप्रोक को ब्लॉक के रूप में भेजना
किसी ऐसे विधि को देने के लिए, जो ब्लॉक की अपेक्षा करती है, किसी Proc के आगे & लगाइए। रूबी उसे फिर से ब्लॉक के रूप में खोल देती है।
printer = proc { |n| puts "Item: #{n}" }
[1, 2, 3].each(&printer)ब्लॉक्स को प्रोक के रूप में ग्रहण करना
उलटा भी संभव है: विधि के हस्ताक्षर में &block दिए गए ब्लॉक को एक ऐसे Proc के रूप में ग्रहण करता है, जिसे आप संग्रहीत कर सकते हैं।
def make_handler(&block)
block
end
h = make_handler { |msg| puts "Got: #{msg}" }
h.call("ping")प्रोक आर्ग्युमेंटों की संख्या के मामले में उदार होते हैं
एक महत्वपूर्ण विशेषता यह है कि प्रोक्स में आर्ग्युमेंटों की गलत संख्या होने पर शिकायत नहीं करते। जो आर्ग्युमेंट छूट जाते हैं, वे nil बन जाते हैं और अतिरिक्त आर्ग्युमेंटों को अनदेखा कर दिया जाता है।
p1 = proc { |a, b| puts "a=#{a.inspect} b=#{b.inspect}" }
p1.call(1)
p1.call(1, 2, 3)प्रोक और रिटर्न
किसी Proc के अंदर मौजूद return केवल Proc से नहीं, बल्कि उसे घेरने वाली विधि से लौटाता है। यह आपको चौंका सकता है, इसलिए सावधानी रखिए।
def demo
p = proc { return 10 }
p.call
20 # never reached
end
puts demoप्रोक अपने आसपास का संदर्भ ग्रहण करते हैं
कोई Proc उस दायरे के वेरिएबल याद रखता है, जहाँ उसे परिभाषित किया गया था। इससे वह एक क्लोज़र बन जाता है—इस विषय को हम आगे विस्तार से देखेंगे।
factor = 3
times_factor = proc { |n| n * factor }
puts times_factor.call(10)सब कुछ एक साथ
प्रोक्स ब्लॉक्स को प्रथम-श्रेणी के ऑब्जेक्ट में बदल देते हैं:
proc { }याProc.newसे बनाएँ।.call,.()या[ ]से चलाएँ।&के साथ विधियों को भेजें।- वे आर्ग्युमेंटों की संख्या के बारे में उदार होते हैं और विधि-स्तर वाले
returnका उपयोग करते हैं।
pipeline = [proc { |s| s.upcase }, proc { |s| s + "!" }]
text = "hello"
pipeline.each { |step| text = step.call(text) }
puts textत्वरित जाँच
प्रोक्स के बारे में अपनी समझ जाँचिए।
पुनरावलोकन
आपने प्रोक्स के बारे में सीखा:
- Proc एक ऑब्जेक्ट में लिपटा हुआ ब्लॉक है।
proc/Proc.newसे बनाएँ और.callसे चलाएँ।&का उपयोग करके विधियों को भेजें।- वे आर्ग्युमेंटों की संख्या में अंतर सहन करते हैं और विधि-स्तर वाले
returnका उपयोग करते हैं।
shout = proc { |word| puts word.upcase }
shout.call("ruby")एआई शिक्षक के साथ Ruby सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 29
- पाठ
- 109
अक्सर पूछे जाने वाले प्रश्न
क्या “Procs” पाठ निःशुल्क है?
हाँ — Ruby Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Procs” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Procs” में मैं क्या सीखूँगा?
पुनःउपयोग योग्य block objects आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Ruby Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Ruby Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Ruby Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Procs” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Ruby Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Ruby Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।