এটি একই স্ট্রিংয়ের জন্য নতুন স্থান বরাদ্দ না করে অ্যাপ্লিকেশন কর্মক্ষমতা উন্নত করে, যার ফলে আবর্জনা সংগ্রহের কাজের জন্য সময় সাশ্রয় করে। কিভাবে? যখন আপনি একটি স্ট্রিং আক্ষরিক (স্ট্রিং অবজেক্ট) হিমশীতল করেন, আপনি রুবিকে বলছেন যে আপনার কোনও প্রোগ্রামকে স্ট্রিং আক্ষরিক (বস্তু) সংশোধন করতে না দিন।
মাথায় রাখতে কিছু সুস্পষ্ট পর্যবেক্ষণ।
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
২. স্ট্রিং লিটারালগুলিকে হিমায়িত করে স্ট্রিং আক্ষরিক পরিবর্তনের চেষ্টা করার সময় আপনার প্রোগ্রামটি একটি ব্যতিক্রম বাড়িয়ে তুলবে।
উদাহরণ:
যাদু মন্তব্য ছাড়াই , আপনি স্ট্রিং লিটারেলগুলি সংশোধন করতে পারেন।
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
শিখতে এবং নমনীয় হওয়ার জন্য আরও সবসময় রয়েছে: