2012-01-17 8 views
37

इन कक्षाओं के बीच क्या अंतर है? उनके उद्देश्यों के बीच क्या अंतर है?रूबी में ऑब्जेक्ट और बेसिक ऑब्जेक्ट के बीच क्या अंतर है?

+1

दस्तावेज़ पहले भाग का जवाब देते हैं। BasicObject में कम कार्यक्षमता है और ऑब्जेक्ट के बजाय इसका उपयोग किया जा सकता है यदि आप वैसे भी ऑब्जेक्ट विधियों का एक गुच्छा हटाते हैं। –

उत्तर

55

BasicObject रूबी 1.9 में पेश किया गया था और यह Object का माता-पिता है (इस प्रकार BasicObject रूबी में सभी वर्गों का मूल वर्ग है)।

::new 
#! 
#!= 
#== 
#__id__ 
#__send__ 
#equal? 
#instance_eval 
#instance_exec 

BasicObject डैलिगेटर तरह रूबी के वस्तु पदानुक्रम के स्वतंत्र वस्तु पदानुक्रम, प्रॉक्सी वस्तुओं बनाने के लिए इस्तेमाल किया जा सकता है:

BasicObject लगभग कोई पर ही तरीकों है कक्षा, या अन्य उपयोग जहां रुबी के तरीकों और कक्षाओं से नामस्थान प्रदूषण से बचा जाना चाहिए।

BasicObject कर्नेल शामिल नहीं है और (पुट तरह के तरीकों के लिए) BasicObject एक एक पूर्ण वर्ग पथ का उपयोग किए बिना मानक पुस्तकालय का नाम स्थान तो आम कक्षाएं नहीं मिलेगा के बाहर है। कर्नेल मॉड्यूल में


वस्तु घोला जा सकता है, निर्मित गिरी कार्यों विश्व स्तर पर सुलभ बनाने। हालांकि वस्तु के कहने तरीकों कर्नेल मॉड्यूल के द्वारा परिभाषित कर रहे हैं ...

आप मामले में अपनी वस्तु की एक अभिभावक के रूप BasicObject उपयोग कर सकते हैं अगर आप Object के तरीकों की जरूरत नहीं है और आप उन्हें अन्यथा अपरिभाषित होगा:

# when you inherit Object 
class Tracer 
    instance_methods.each do |m| 
    next if [:__id__, :__send__].include? m 
    undef_method m 
    end 

    # some logic 
end 

# when you inherit BasicObject 
class Tracer < BasicObject 
    # some logic 
end 
संबंधित मुद्दे