2010-08-07 18 views

उत्तर

34

"सबकुछ" से आपका क्या मतलब है इस पर निर्भर करता है। Fixnum एस हैं, जैसा कि अन्य ने दिखाया है। कक्षाएं भी Class के उदाहरण के रूप में हैं। तरीके, ऑपरेटरों और ब्लॉक नहीं हैं, लेकिन वस्तुओं द्वारा लिपटे जा सकते हैं (Proc)। सरल असाइनमेंट नहीं है, और नहीं कर सकता है। while जैसे वक्तव्य भी नहीं हैं और नहीं कर सकते हैं। टिप्पणियां स्पष्ट रूप से बाद के समूह में भी आती हैं।

अधिकांश चीजें जो वास्तव में मायने रखती हैं, यानी आप चीजों में हेरफेर करना चाहते हैं, वस्तुएं हैं (या वस्तुओं में लपेटा जा सकता है)।

+1

+1 इन काउंटर-उदाहरणों से प्यार करें। यह कहकर कि सबकुछ किसी वस्तु पर विचार किए बिना एक वस्तु है, थोड़ा सा दिमाग है :) – Jakob

+0

+1 - शानदार है कि मैं किसी अन्य प्रश्न में कहने की कोशिश कर रहा था, जिससे यह प्रश्न पैदा हुआ है। – RubyDubee

+0

ऑब्जेक्ट क्यों नहीं है? – Ziggy

1

हाँ भी शामिल है।

> pp Fixnum.ancestors 
[Fixnum, 
Integer, 
Precision, 
Numeric, 
Comparable, 
Object, 
    ... 
Kernel] 
=> nil 
+0

'# पूर्वज 'सभी शामिल मॉड्यूल भी प्रदान करता है, न केवल विरासत श्रृंखला। – jtbandes

+0

इसके अलावा, 'पीपी' डिफ़ॉल्ट रूप से उपलब्ध नहीं है, कम से कम 1.8.7p174 में। – jtbandes

+0

हाँ, मुझे पता है! धन्यवाद। – Dex

4

हाँ:

> Fixnum.is_a?(Object) #=> true 

विरासत की श्रृंखला देखने के लिए। Fixnum एक कक्षा है, जो Integer से प्राप्त होती है, जो Numeric से प्राप्त होती है, जो अंत में Object से प्राप्त होती है।

या, आप इसे क्यों नहीं पूछते? :)

1.is_a? Object # => true 
1.class # => Fixnum 
Fixnum.is_a? Object # => true 

Ruby info और documentation पढ़ना वेबसाइट पर एक अच्छा विचार भी है।

2

रुबी के पास कोई प्राइमेटिव नहीं है (जैसे जावा में int, char आदि), इसलिए प्रत्येक मान (जो कुछ भी असाइनमेंट स्टेटमेंट के दाईं ओर बैठ सकता है) एक ऑब्जेक्ट है। हालांकि, नियंत्रण वाक्य, विधियों और भाषा वाक्यविन्यास की अन्य विशेषताएं नहीं हैं।

4

रूबी में व्यावहारिक रूप से सब कुछ नियंत्रण संरचनाओं के अपवाद के साथ एक वस्तु है। कवर के तहत चाहे या नहीं, कोड ब्लॉक या ऑपरेटर ऑब्जेक्ट है या नहीं, उन्हें ऑब्जेक्ट्स के रूप में दर्शाया गया है और इस तरह के बारे में सोचा जा सकता है।

उदाहरण के लिए एक कोड ब्लॉक लें:

def what_is(&block) 
    puts block.class 
    puts block.is_a? Object 
end 

> what_is {} 
Proc 
true 
=> nil 

या एक विधि के लिए:

class A 
    def i_am_method 
    "Call me sometime..." 
    end 
end 

> m = A.new.method(:i_am_method) 
> m.class 
Method 
> m.is_a? Object 
true 
> m.call 
"Call me sometime..." 

और ऑपरेटरों (जैसे +, -, [], < <) तरीके के रूप में लागू किया जाता है:

class String 
    def + 
    "I'm just a method!" 
    end 
end 

लोगों के लिए पहली बार प्रोग्रामिंग में आने के लिए, इसका अर्थ एपी में क्या है सामरिक भावना यह है कि आप जिन नियमों को एक प्रकार के ऑब्जेक्ट पर लागू कर सकते हैं उन्हें दूसरों तक बढ़ाया जा सकता है। आप एक स्ट्रिंग, ऐरे, कक्षा, फ़ाइल या किसी भी कक्षा के बारे में सोच सकते हैं जिसे आप वैसे ही व्यवहार करते हुए परिभाषित करते हैं। यह उन कारणों में से एक है क्यों रूबी को चुनना आसान है और कुछ अन्य भाषाओं की तुलना में काम करना आसान है।

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