Aynı dize için yeni alan ayırmayarak uygulama performansını iyileştirir, böylece çöp toplama işleri için zaman kazandırır. Nasıl? bir dize değişmezini (dize nesnesi) dondurduğunuzda, Ruby'ye programlarınızın hiçbirinin dize değişmez değerini (nesne) değiştirmesine izin vermemesini söylersiniz.
Akılda tutulması gereken bazı açık gözlemler.
1. Dize değişmezlerini dondurduğunuzda, bunun için yeni bellek alanı ayırmazsınız.
Misal:
Sihirli yorum olmadan aynı dize için yeni alan ayırır (Yazdırılan farklı nesne kimliklerini gözlemleyin)
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358500
Sihirli bir yorumla , ruby sadece bir kez yer ayırır
# frozen_string_literal: true
def hello_id
a = 'hello'
a.object_id
end
puts hello_id #=> 70244568358640
puts hello_id #=> 70244568358640
2. Dize değişmezlerini dondurduğunuzda, dizgi değişmez değerlerini değiştirmeye çalışırken programınız bir istisna oluşturur.
Misal:
Sihirli yorum olmadan , dize değişmezlerini değiştirebilirsiniz.
name = 'Johny'
name << ' Cash'
puts name #=> Johny Cash
Sihirli yorumda , dize değişmezlerini değiştirdiğinizde bir istisna ortaya çıkar
# frozen_string_literal: true
name = 'john'
name << ' cash' #=> `<main>': can't modify frozen String (FrozenError)
puts name
Öğrenmek ve esnek olmak için her zaman daha fazlası vardır: