2013-01-16 6 views
5

रूबी में जमे हुए ऑब्जेक्ट्स, String या Array (आदि) ऑब्जेक्ट के लिए 'फ्रोजन' होने का क्या अर्थ है? यह संपत्ति कैसे सेट/संशोधित है?रूबी

उत्तर

7

इसका मतलब है कि आप इसे संशोधित नहीं कर सकते हैं। आप इसे freeze विधि से सेट करते हैं।

s = "a" 

concat स्ट्रिंग उदाहरण को संशोधित करता है।

s.concat("b") 
# => "ab" 

जब आप स्ट्रिंग फ्रीज:

s.freeze 

फिर, आप concat किसी भी अधिक लागू नहीं कर सकते।

s + "c" 
# => "abc" 
2

obj के लिए आगे संशोधनों को रोकता है:

s.concat("c") 
# => RuntimeError: can't modify frozen String 

लेकिन, आप तरीकों कि रिसीवर को संशोधित नहीं लागू कर सकते हैं। अगर संशोधन का प्रयास किया जाता है तो एक रनटाइमर उठाया जाएगा। एक जमे हुए वस्तु को अनफ्रीज़ करने का कोई तरीका नहीं है। ऑब्जेक्ट # जमे हुए भी देखें?

a = [ "a", "b", "c" ] 
a.freeze 
a << "z" 

पैदा करता है:

prog.rb:3:in `<<': can't modify frozen array (RuntimeError) 
from prog.rb:3 

Doco