2009-11-07 19 views
6

में मैं इसप्रारंभ रूबी

public constructor_name() { 
    this(param) 
} 

public constructor_name(int param) { 
    this.param = param 
} 
जावा में

और क्या रूबी के बारे में हम आत्म संदर्भ निर्माता इस तरह की क्या ज़रूरत है किया करते थे?

उत्तर

9

वे मान्य जावा नहीं हैं, लेकिन मुझे लगता है कि आप जो प्राप्त कर रहे हैं वह यह है कि आप एक वैकल्पिक तर्क चाहते हैं। इस मामले में, आप या तो बस तर्क एक डिफ़ॉल्ट मान

def initialize(param=9999) 
... 
end 

दे सकता है या आप एक सूचक तर्क इस्तेमाल कर सकते हैं:

def initialize(*params) 
    param = params.pop || 9999 
end 
+0

भी आप इसे 'हैश नामित तर्क' का उपयोग कर सकते हैं, मुझे लगता है कि ... – rogerdpack

12

के बाद रूबी एक गतिशील भाषा है, आप एक से अधिक निर्माताओं नहीं हो सकता (या उस मामले के लिए कन्स्ट्रक्टर चेनिंग करें)। उदाहरण के लिए, निम्नलिखित कोड में:

class A 
    def initialize(one) 
    puts "constructor called with one argument" 
    end 
    def initialize(one,two) 
    puts "constructor called with two arguments" 
    end 
end 

आप विभिन्न पैरामीटर के साथ 2 निर्माता होने की उम्मीद करेंगे। हालांकि, अंतिम मूल्यांकन का मूल्यांकन कक्षा का कन्स्ट्रक्टर होगा। इस मामले में initialize(one,two)

+6

आप तर्क क्यों देंगे कि आपके पास एकाधिक रचनाकार नहीं हो सकते हैं रूबी एक गतिशील भाषा होने से संबंधित है? जहां तक ​​मैं यह देख सकता हूं कि यह एक डिज़ाइन निर्णय है जो भाषा से गतिशील है या नहीं, इससे संबंधित नहीं है। – Cumbayah

+1

@ कुम्बाया इसे पुनर्जीवित करने के लिए खेद है, लेकिन भविष्य के पाठकों के लिए: लेखक का अर्थ हो सकता है कि रूबी को निष्पादित किया गया है (कुछ पहलुओं में) जैसे कि यह एक इंटरैक्टिव सत्र में था, इसलिए एक समारोह को दो बार परिभाषित करने से पुराने को बदल दिया जाता है। – Kroltan

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