Genel Değişkenler

Genel değişkenler isimlerinin başında birer $ işareti bulundururlar. Genel değişkenlere yazılımın her hangi bir yerinden başvurulabilir. İlklendirilmeden önce nil değerine sahiptirler.

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

Genel değişkenler dikkatli kullanılmalıdırlar. Her yerden yazılabildikleri için tehlikelidirler. 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 global 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 sadece 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):

Tablo 4.3.

$! 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ı argümanları
$$ 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ırlar.