20. Genel Değişkenler

Genel değişkenler isimlerinin başında birer $ işareti bulunur. Genel değişkenlere yazılımın her hangi bir yerinden başvurulabilir ve ilklendirilmeden önce nil değerine sahiptir.

ruby> $foo
   nil
ruby> $foo = 5
   5
ruby> $foo
   5

Genel değişkenler dikkatli kullanılmalıdır. Her yerden yazılabildikleri için tehlikelidir. Genel değişkenlerin aşırı kullanılması yanlışları izole etmede zorluk çıkarabildiği gibi yazılımın iyice düşünülmeden tasarlandığına dikkat çeker. Genel değişken kullanmayı uygun gördüğünüz zaman, onlara anlaşılabilir isimler verdiğinizden emin olun ( $foo gibi birşeyi çağırmak oldukça kötü bir fikir değil mi?).

Genel değişkenlerin güzel bir özelliği de izlenebilir olmalarıdır; bir değişkenin değeri ne zaman değişirse o zaman çağrılan bir yordam belirleyebilirsiniz.

ruby> trace_var :$x, proc{ print "$x şimdi ", $x, "\n" }
   nil
ruby> $x = 5
$x şimdi 5
   5

Bir küresel değişken, değiştiği zaman bir yordamı çalıştırmak için kullanılıyorsa, etkin değişken olarak da anılır.

Aşağıda $ işaretini takiben tek bir karakter daha içeren bir dizi özel değişken bulunuyor. Örneğin $$ Ruby yorumcusunun süreç numarasını içerir ve salt okunabilirdir. Aşağıda önemli sistem değişkenleri ve anlamları bulunuyor: (ayrıntılar için Ruby Başvuru Kılavuzuna bakınız):

$! son hata iletisi
$@ hatanın konumu
$_ gets tarafından okunan son dizge
$. yorumlayıcı tarafından son okunan satır numarası
$& regexp tarafından son bulunan dizge
$~ alt ifade (subexpression) dizisi olarak regexp tarafından bulunan son ifade
$ n son bulunan n'inci alt ifade ($~[n] ile aynı)
$= büyük-küçük harfe duyarsız bayrak
$/ girdi kaydı ayracı (input record separator)
$\ çıktı kaydı ayracı (output record separator)
$0 ruby betik dosyasının adı
$* komut satırı girdileri
$$ yorumcunun süreç numarası (PID)
$? son işletilen çocuk sürecin çıkış durumu

$_ ve $~ için etki alanı yereldir. Her ne kadar isimleri gereği genel değişkenler olmaları gerekiyorsa da böyle daha kullanışlıdır.