Ruby Language
रूबी में बंदर पैचिंग
खोज…
टिप्पणियों
बंदर सुविधाजनक, जबकि सुविधाजनक कुछ नुकसान है कि तुरंत स्पष्ट नहीं कर रहे हैं। सबसे विशेष रूप से, इस तरह एक पैच वैश्विक दायरे को प्रदूषित करता है। यदि दो मॉड्यूल दोनों Hash#symbolize
, तो केवल अंतिम मॉड्यूल की आवश्यकता होती है जो वास्तव में इसके परिवर्तन को लागू करता है; बाकी मिटा दिए गए हैं।
इसके अलावा, अगर वहाँ एक पैच विधि में कोई त्रुटि है, तो स्टैच्रेस केवल पैच किए गए वर्ग को इंगित करता है। इसका तात्पर्य है कि Hash
वर्ग में ही एक बग (जो अब है)।
अंत में, क्योंकि रूबी क्या कंटेनरों के साथ बहुत लचीला है, एक विधि जो बहुत सरल लगती है जब आप लिखते हैं तो इसमें बहुत सारी अपरिभाषित कार्यक्षमता होती है। उदाहरण के लिए, Array#sum
बनाना संख्याओं की एक सरणी के लिए अच्छा है, लेकिन कस्टम वर्ग की एक सरणी दिए जाने पर टूट जाता है।
एक सुरक्षित विकल्प शोधन है, जो रूबी> = 2.0 में उपलब्ध है।
कार्यात्मकता जोड़ना
आप रूबी में किसी भी वर्ग के लिए एक विधि जोड़ सकते हैं, चाहे वह बिलिन हो या नहीं। कॉलिंग ऑब्जेक्ट को self
का उपयोग करके संदर्भित किया जाता है।
class Fixnum
def plus_one
self + 1
end
def plus(num)
self + num
end
def concat_one
self.to_s + '1'
end
end
1.plus_one # => 2
3.plus(5) # => 8
6.concat_one # => '61'