मैं एक दस्तावेज पढ़ रहा हूं जो रिसीवर रखने वाली विधि के बारे में बात करता है। एक रिसीवर क्या है?रूबी में "रिसीवर" का क्या अर्थ है?
उत्तर
रूबी में (और अन्य भाषाएं जो स्मॉलटाक से प्रेरणा लेती हैं) वस्तुओं को 'संदेश' भेजने और प्राप्त करने के बारे में सोचा जाता है।
रूबी, वस्तु, सब कुछ के आधार वर्ग, में एक भेजें विधि है: Object.send उदाहरण के लिए:
class Klass
def hello
"Hello!"
end
end
k = Klass.new
k.send :hello #=> "Hello"
k.hello #=> "Hello"
इन दोनों मामलों में कश्मीर 'हैलो' संदेश के रिसीवर है।
"k.send: हैलो" वास्तव में रुबी में "के.हेल्लो" को कॉल करने का एक वाक्य रचनात्मक रूप से वैध तरीका है? – lorz
आप कहते हैं कि के रिसीवर है। तो हम "k.receive: हैलो" के बजाय "k.send: हैलो" क्यों कहते हैं? यह * लगता है * के जैसे रिसीवर के बजाय प्रेषक है। – lorz
क्योंकि आप TO k भेज रहे हैं, और TO को प्राप्त नहीं कर रहे हैं। वह बाद का विकल्प थोड़ा समझ में आता है। ;) –
इससे पहले ऑब्जेक्ट।
एक विधि x.y कहने के बारे में सोचें "ऑब्जेक्ट एक्स को ऑब्जेक्ट भेजें"।
यह सोचने का छोटा सा तरीका है, यह आपको अच्छी तरह से सेवा देगा क्योंकि आप रूबी की कुछ उन्नत सुविधाओं में से कुछ प्राप्त करते हैं।
मूल स्मॉलटाक शब्दावली में, "ऑब्जेक्ट्स" पर विधियों को ऑब्जेक्ट्स के संदेशों के रूप में प्रस्तुत किया गया था (यानी आपने ऑब्जेक्ट foo पर कोई विधि नहीं बुलाई, आपने ऑब्जेक्ट को एक संदेश भेजा)। तो foo.blah "blah" संदेश भेज रहा है, जिसे "foo" ऑब्जेक्ट प्राप्त हो रहा है; "फू" "ब्लाह" का रिसीवर है।
मुझे आश्चर्य हुआ कि क्या यह अमेरिकी फुटबॉल द्वारा प्रेरित एक शब्द था। –
रूबी से प्राप्त नया विचार यह है कि ओओ प्रोग्रामिंग एक प्रकार का संदेश गुजर रहा है। – Alex