" Ruby Sembollerini Anlamak " ı okumamıza rağmen , sembollerin kullanılması söz konusu olduğunda hafızadaki verilerin temsili hala kafam karışık. İkisi farklı nesnelerde bulunan bir sembol aynı hafıza konumunda bulunuyorsa, o zaman nasıl farklı değerler içerirler ? Aynı bellek konumunun aynı değeri içermesini beklerdim.
Bu bağlantıdan bir alıntı:
Dizelerden farklı olarak, aynı isimli semboller başlatılır ve Ruby'nin oturumu sırasında yalnızca bir kez bellekte bulunur.
Aynı hafıza konumunda bulunan değerleri farklılaştırmayı nasıl başardığını anlamıyorum.
Şu örneği düşünün:
patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }
patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
patient1ve patient2ikisi de karmadır, sorun değil. :rubyancak bir semboldür. Aşağıdakileri çıkarırsak:
patient1.each_key {|key| puts key.to_s}
O zaman çıktı ne olacak? "red"veya "programming"?
Karmaları bir saniyeliğine unutarak, bir sembolün bir değerin göstericisi olduğunu düşünüyorum . Sahip olduğum sorular:
- Bir sembole değer atayabilir miyim?
- Bir sembol, içinde değer bulunan bir değişkeni gösteren bir gösterici midir?
- Semboller küreselse, bu bir sembolün her zaman bir şeyi işaret ettiği anlamına mı gelir?
puts patient1[:ruby]"kırmızı" yazacakputs patient2[:ruby], derseniz "programlama" yazacaktır.