it-swarm.dev

Ruby'de sembol nedir?

Ruby dünyasında tamamen yeniyim ve Semboller kavramı ile biraz kafam karıştı. Semboller ve Değişkenler arasındaki fark nedir? Neden sadece değişkenler kullanılmıyor?

Teşekkürler.

49
wassimans

Değişkenler ve semboller farklı şeylerdir. Değişken, farklı veri türlerini gösterir. Ruby'de, sembol bir değişkenten çok bir dize gibidir.

Ruby'de bir dize değiştirilebilir, sembol değiştirilemez. Bu, bir sembolün yalnızca bir kopyasının oluşturulması gerektiği anlamına gelir. Böylece, eğer varsa

x = :my_str
y = :my_str

:my_str Yalnızca bir kez oluşturulur ve x ve y aynı bellek alanını işaret eder. Öte yandan, eğer varsa

x = "my_str"
y = "my_str"

my_str içeren bir dize oluşturulacaktır iki kez ve x ve y farklı örnekleri işaret edecektir.

Sonuç olarak, semboller genellikle Ruby'deki numaralara eşdeğer olarak ve bir sözlük (karma) anahtarları olarak kullanılır.

74
mipadi

Ruby içindeki sembol temelde gerçek dünyadaki sembolle aynıdır) Bir şeyi temsil etmek veya adlandırmak için kullanılır.

Semboller, bir tür durumu temsil etmek için yaygın olarak kullanılır, örneğin

order.status = :canceled
order.status = :confirmed

Simgeye anlık numaralandırma olarak da bakabilirsiniz. Bir sembol tanımlamanız gerekmez, sadece onu kullanın. Bu makalede ayrıntılı olarak açıklanmaktadır.

18
Jakub Arnold

Genellikle, değişkenler dizelerle karıştırılma eğilimindedir, ancak bunu değişken olarak düşündüğünüzü anlayabilirim. Anlaşılabilir. Bu şekilde düşün:

Bir oyundaki oyuncunun durumu bir sayı ile temsil edilir. 1 canlı, 2 emin, 3 ölü demektir. Bu kolayca sembollerle değiştirilebilir. Semboller :alive:unsure ve :dead. Bir oyuncunun hayatta olup olmadığını kontrol etmek için bunu yapmak yerine:

if player_status == 1

Bunu yapabilirsin:

if player_status == :alive

1
sirsnow