यह एक ही स्ट्रिंग के लिए नई जगह आवंटित नहीं करके आवेदन प्रदर्शन में सुधार करता है, जिससे कचरा संग्रह के कामों के लिए समय की भी बचत होती है। कैसे? जब आप एक स्ट्रिंग शाब्दिक (स्ट्रिंग ऑब्जेक्ट) को फ्रीज करते हैं, तो आप रूबी से कह रहे हैं कि अपने किसी भी प्रोग्राम को स्ट्रिंग शाब्दिक (ऑब्जेक्ट) को संशोधित न करने दें।
कुछ स्पष्ट टिप्पणियों को ध्यान में रखना।
1. स्ट्रिंग स्ट्रिंग को फ्रीज़ करके, आप इसके लिए नई मेमोरी स्पेस आवंटित नहीं कर रहे हैं।
उदाहरण:
जादू की टिप्पणी के बिना एक ही स्ट्रिंग के लिए नई जगह आवंटित करता है (मुद्रित अलग ऑब्जेक्ट आईडी का निरीक्षण करें)
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358500
जादू की टिप्पणी के साथ , माणिक केवल एक बार अंतरिक्ष आवंटित करता है
# frozen_string_literal: true
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358640
2. स्ट्रिंग शाब्दिकों को फ्रीज़ करके, आपका प्रोग्राम एक अपवाद बढ़ाएगा जब स्ट्रिंग शाब्दिक को संशोधित करने की कोशिश की जाएगी।
उदाहरण:
जादू की टिप्पणी के बिना , आप स्ट्रिंग शाब्दिक को संशोधित कर सकते हैं।
name = 'Johny'
name << ' Cash'
puts name #=> Johny Cash
जादू की टिप्पणी के साथ , जब आप स्ट्रिंग शाब्दिकों को संशोधित करते हैं तो एक अपवाद उठाया जाएगा
# frozen_string_literal: true
name = 'john'
name << ' cash' #=> `<main>': can't modify frozen String (FrozenError)
puts name
सीखने और लचीले होने के लिए हमेशा अधिक होता है: