2012-02-09 15 views
6

कुछ ब्लॉग और आलेख खोजकर मैंने पाया कि रुबी में प्रत्येक वर्ग स्वयं Class का उदाहरण है। कक्षा विधियों और उदाहरण विधियों के बीच भरोसा क्या है और रूबी ने ऑब्जेक्ट की वस्तु बनाने की अनुमति दी?मैं रूबी में क्लास विधि और इंस्टेंस विधि का उपयोग कैसे कर सकता हूं?

मैं अब

str = Class.new(String) 
=> #<Class:0xb5be1418> 

my_str = str.new() 
=> "" 

my_str = str.new("hello") 
=> "hello" 

my_str.class 
=> #<Class:0xb5be1418> 

str.class 
=> Class 

समझने में सक्षम नहीं कुछ इस तरह है लेकिन अभी भी करने की कोशिश पूरी तरह भ्रमित तो मुझे इस

उत्तर

0
class Dog 
# Returns the number of dog objects created using this class 
def self.count 
end 

# Returns name of the dog object 
def name 
end 
end 

ऊपर के उदाहरण से, सामान्य विधि (जो सभी कुत्ते वस्तुओं से संबंधित है) class method कहा जाता है।

किसी विशेष कुत्ते (कुत्ते ऑब्जेक्ट) से संबंधित विधि को instance method कहा जाता है।

रूबी ऑब्जेक्ट मॉडल के अनुसार, Dogconstant है जो Class वर्ग के उदाहरण के लिए इंगित करता है। जब भी कुत्ते में एक क्लास विधि जोड़ा जाता है, तो क्लास विधियों को रखने के लिए कक्षा पदानुक्रम में Metaclass नामक एक नई कक्षा को जोड़ा जाएगा।

4

पहले ही वाक्य में के बारे में बता आप String की सुपर क्लास के साथ अनाम वर्ग बनाने के लिए:

my_str.class.superclass # => String 

लेकिन यह अपने वास्तविक सवाल :)

+०१२३५१६४१०६१ का सार नहीं है

इंस्टेंस कुछ वर्ग का एक वस्तु है: String.new() # creates instance of class String। उदाहरण कक्षा (String.new()).class #=> String है। सभी वर्ग वास्तव में कक्षा Class: String.class # => Class के उदाहरण हैं। Class कक्षा के उदाहरण भी superclass - वे वर्ग हैं जिनसे वे उत्तराधिकारी हैं।

इंस्टेंस विधि एक ऐसी विधि है जिसे आप किसी ऑब्जेक्ट के उदाहरण पर कॉल कर सकते हैं। रूबी में

"st ri ng".split # split is an instance method of String class 

कक्षा विधिउदाहरण तरीकों Class वर्ग (किसी भी वर्ग) की एक वस्तु की के लिए एक आम शब्द है।

String.try_convert("abc") # try_convert is a class method of String class. 

आप this article में उदाहरण और कक्षा विधियों के बारे में अधिक पढ़ सकते हैं।

+2

पूरी तरह से नाइट-पिकटी होने के लिए, क्लास –

+0

@FrederickCheung, +1 के उदाहरणों के सिंगलटन विधियां हैं, लेकिन मेरा मानना ​​है कि रूबी शुरुआती वर्ग और इंस्टेंस विधियों के बीच अंतर को समझने के लिए यह ज्ञान आवश्यक नहीं है;) –

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