2009-05-27 17 views
19

मैं एक दस्तावेज पढ़ रहा हूं जो रिसीवर रखने वाली विधि के बारे में बात करता है। एक रिसीवर क्या है?रूबी में "रिसीवर" का क्या अर्थ है?

+1

मुझे आश्चर्य हुआ कि क्या यह अमेरिकी फुटबॉल द्वारा प्रेरित एक शब्द था। –

+0

रूबी से प्राप्त नया विचार यह है कि ओओ प्रोग्रामिंग एक प्रकार का संदेश गुजर रहा है। – Alex

उत्तर

18

रूबी में (और अन्य भाषाएं जो स्मॉलटाक से प्रेरणा लेती हैं) वस्तुओं को 'संदेश' भेजने और प्राप्त करने के बारे में सोचा जाता है।

रूबी, वस्तु, सब कुछ के आधार वर्ग, में एक भेजें विधि है: Object.send उदाहरण के लिए:

class Klass 
    def hello 
    "Hello!" 
    end 
end 
k = Klass.new 
k.send :hello #=> "Hello" 
k.hello   #=> "Hello" 

इन दोनों मामलों में कश्मीर 'हैलो' संदेश के रिसीवर है।

+0

"k.send: हैलो" वास्तव में रुबी में "के.हेल्लो" को कॉल करने का एक वाक्य रचनात्मक रूप से वैध तरीका है? – lorz

+3

आप कहते हैं कि के रिसीवर है। तो हम "k.receive: हैलो" के बजाय "k.send: हैलो" क्यों कहते हैं? यह * लगता है * के जैसे रिसीवर के बजाय प्रेषक है। – lorz

+0

क्योंकि आप TO k भेज रहे हैं, और TO को प्राप्त नहीं कर रहे हैं। वह बाद का विकल्प थोड़ा समझ में आता है। ;) –

6

इससे पहले ऑब्जेक्ट।

एक विधि x.y कहने के बारे में सोचें "ऑब्जेक्ट एक्स को ऑब्जेक्ट भेजें"।

यह सोचने का छोटा सा तरीका है, यह आपको अच्छी तरह से सेवा देगा क्योंकि आप रूबी की कुछ उन्नत सुविधाओं में से कुछ प्राप्त करते हैं।

6

मूल स्मॉलटाक शब्दावली में, "ऑब्जेक्ट्स" पर विधियों को ऑब्जेक्ट्स के संदेशों के रूप में प्रस्तुत किया गया था (यानी आपने ऑब्जेक्ट foo पर कोई विधि नहीं बुलाई, आपने ऑब्जेक्ट को एक संदेश भेजा)। तो foo.blah "blah" संदेश भेज रहा है, जिसे "foo" ऑब्जेक्ट प्राप्त हो रहा है; "फू" "ब्लाह" का रिसीवर है।

संबंधित मुद्दे