इस noob प्रश्न के लिए खेद है के माध्यम से एक सरणी उदाहरण चर के संशोधन को रोकने के लिए ... चलो कहते हैं कि हमारे पास करते हैं:रूबी:</p> <pre><code>class TestMe attr_reader :array def initialize @array = (1..10).to_a end </code></pre> <p>अंत</p> <p>यह तो ऐसा करना संभव है: कैसे एक विशेषता पाठक
>> a = TestMe.new
=> #<TestMe:0x00000005567228 @x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>
>> a.array.map! &:to_s
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
>> a.array
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
- यह स्पष्ट रूप से कैप्सूलीकरण के खिलाफ जाता है, doesn'it?
- क्या सरणी चर को बदलने से जल्दी से सुरक्षित करने का कोई तरीका है?
- ... या क्या मुझे हर बार मेरे इंस्टेंस वैरिएबल में "विनाशकारी" विधियों के साथ एक गहरी प्रति पाठक को लागू करने की आवश्यकता है?
संपादित मैं पढ़ कहीं यह एक सरणी उदाहरण चर का पर्दाफाश करने के "बुरा OO" है। यदि यह सच है, क्यों?
मुझे लगता है कि आपका मूल प्रश्न आपके सेकेंड प्रश्न का उत्तर देता है कि सरणी आवृत्ति चर का खुलासा क्यों अच्छा नहीं है। –
@ केएल -7: पूरी तरह से: डी –