मैं प्रॉक्सी ऑब्जेक्ट बनाने की कोशिश कर रहा हूं जो लगभग सभी विधि कॉल को बच्चे ऑब्जेक्ट में स्थानांतरित करता है, अनिवार्य रूप से प्रतिनिधिमंडल पैटर्न। अधिकांश भाग के लिए, मैं केवल मूल ऑब्जेक्ट का उपयोग कर रहा हूं और बाल ऑब्जेक्ट में method_missing के साथ हर कॉल को पास कर रहा हूं। अब तक सब ठीक है.रूबी के केस ऑपरेटर को मूर्ख बनाना, ===, प्रॉक्सी ऑब्जेक्ट्स
चाल, कि के रूप में मैं हो सकता है की कोशिश है मैं रूबी के मामले ऑपरेटर मूर्ख नहीं कर सकते, तो मैं ऐसा नहीं कर सकते:
x = Proxy.new(15)
Fixnum === x #=> false, no matter what I do
निश्चित रूप से यह किसी भी case x
कार्रवाई विफल बनाता है, जो प्रॉक्सी कर सकते हैं इसका मतलब है अन्य पुस्तकालयों को सुरक्षित रूप से बंद नहीं किया जाएगा।
मैं अपने जीवन के लिए नहीं कर सकता कि क्या === उपयोग कर रहा है।
x.is_a?(Fixnum) #=> true
x.instance_of?(Fixnum) #=> true
x.kind_of?(Fixnum) #=> true
x.class #=> Fixnum
Module#===
है सिर्फ इतना है कि टाला नहीं जा सकता जादू किसी तरह का कर रही: प्रॉक्सी वर्ग आधारित आत्मनिरीक्षण मैं के बारे में पता है, जो सभी सही ढंग से बच्चे वस्तु को पारित कर दिया है सभी के लिए ठीक काम करता है?
चेतावनी का एक शब्द: यदि आप 'is_a? ',' Instance_of? ',' Kind_of? ',' Class' आदि को प्रस्तुत करके 'फिक्सम' के रूप में अपनी प्रॉक्सी को मास्कराइड किए बिना अपना लक्ष्य प्राप्त कर सकते हैं, तो कृपया ऐसा करें! इन तरीकों को बदलने से आपको नरक डीबग करने के लिए सीधे (या कोई आपके कोड का उपयोग/रखरखाव कर सकता है)। – molf