मेरे पास रूबी के तरीकों, प्रक्रियाओं और ब्लॉक के बारे में कुछ प्रश्न हैं जो मुझे अजीब तरह से मारते हैं। वे सिंटैक्स या फ़ंक्शन के बारे में बहुत कुछ नहीं हैं जो निर्णय के पीछे तर्क के रूप में हैं।रूबी विधि, प्रो, और ब्लॉक भ्रम
प्रश्न 1:
ऐसा क्यों है कि ब्लॉक के तरीकों को पारित किया जा सकता है (उदाहरण के लिए प्रत्येक), लेकिन वे एक चर को सौंपा नहीं जा सकता है?
मुझे पता है कि आप प्रक्रियाओं में उन्हें पास कर सकते हैं, यानी p = Proc.new {...}
(&p
के साथ एक्सेस किया गया), लेकिन प्रोग्रामर इन माध्यमों से गुजरने के लिए ज्यादा समझ में नहीं आता है।
प्रश्न 2:
क्यों तरीकों और प्रक्रियाओं के बीच एक भेदभाव है?
def square(x)
x**2
end
square(3)
=> 9
या
square = lambda {|x| x**2}
square.call(3)
=> 9
क्यों भेदभाव:
उदाहरण के लिए, मैं निम्नलिखित दो तरह से एक समारोह को परिभाषित करने और उस समारोह को बुलाने की कार्य को पूरा कर सकते हैं? पायथन में उदाहरण के लिए मानक तरीके से एक फ़ंक्शन को परिभाषित करना और square = lambda x: x**2
द्वारा फ़ंक्शन बनाने और इसे square
पर असाइन करने का एक ही कार्य पूरा करें।
रूबी का दावा कुछ एक ऑब्जेक्ट है। ब्लॉक के साथ फिट होने के लिए वस्तुओं को होना चाहिए, और उन्हें तर्क के रूप में पारित किया जा सकता है, इसलिए वे निश्चित रूप से कुछ तरीकों से वस्तुओं की तरह कार्य करते हैं। – rpjohnst
ब्लॉक, उन्हें एक वस्तु या एक लैम्ब्डा का प्रतिनिधित्व करने के लिए ऑब्जेक्ट बनाने के माध्यम से वस्तुओं की तरह कार्य करने के लिए बनाया जा सकता है। उस डिवाइस के बिना, वे सिर्फ वाक्य रचनात्मक संरचनाएं हैं। – Pinochle
ब्लॉक ऑब्जेक्ट्स हैं - यह लैम्ब्डा का उद्देश्य है {जो भी}। – Chuck