Adım Adım Ruby - 2 -

November 11, 2007

Eğer kendi kendinize birşey öğreniyorsanız ve birşeyler öğrenirken sıkılıyorsanız bunun sebebi kesinlikle bilinmeyenin göz korkutmasıdır. Yani kitaplar şimdi bunu yapıyoruz şunu kullanacağız. Bir sürü bilinmeyen bir sürü soru işareti ve sonunda oluşan kocaman bir korku ortaya çıkar. Eğer sabır da göstermezsek sonunda pes edip öğrenilen şeyden vazgeçeriz. Bu sebeple yeni birşey öğrenirken geneline bir bakış atmak. Ne neymiş, neden kullanılırmış anlamak isterim. İşte bu sebeple bu yazıda ruby’i ruby yapan şeylerden ve genel özelliklerinden söz edeceğim. Bunların hızlıca üzerinden geçeceğim ama verdiğim bilgiler referans niteliğinde olacak. İleride bu konuda örnekler verdiğimde kodu anlamanıza büyük kolaylık sağlayacak.

Ruby’i Seçmeniz İçin Birkaç Neden?

Genel Yazım Kuralları

Reserve Kelimeler

alias   and     BEGIN   begin   break   case    class   def     defined
do      else    elsif   END     end     ensure  false   for     if
fin      module  next    nil     not     or      redo    rescue  retry
return  self    super   then    true    undef   unless  until   when
while   yield

Veri Tipleri Sayı(numbers), String, Aralık(ranges), RegEx, Sembol(symbol), Diziler(arrays), Sözlükler(hashes) Prosedur (proc)

Sayılar Bignum (1234567890) Fixnum (1234) Float (1234.56) Hex (0xFFFF) Binary (0b0101010) Octal (0377) ?a ASCII karakterinin sayısal degeri ?\C-a Control-a karakterinin sayısal degeri ?\M-a Meta-a karakterinin sayısal degeri ?\M-\C-a Meta-Control-a karakterinin sayısal degeri

String %() ile baslayan karakterleri asagidakiler string karakteridir. %[], %!!, %@@, vb.

‘araya deger girilemez’ “#{degisken}, ve backslash karakter alir\n” %q(araya deger girilmez) %Q(araya deger ve backslash karakteri alir)

%(araya deger ve backslash karakteri alir)

echo komut satırı ara deger ve backslash karakterleri alir. => ls denemek ister misiniz? %x(echo komut satırı ara deger ve backslash karakterleri alir.)

Backslash \t (tab), \n (newline), \r (carriage return), \f (form feed), \b (backspace), \a (bell), \e (escape), \s (whitespace), \nnn (octal), \xnn (hexadecimal), \cx (control x), \C-x (control x), \M-x (meta x), \M-\C-x (meta control x)

Semboller

Sozluk(hash) ifadelerinde kullanmak icin idealdir. C’de enum’a benzer fakat deger almazlar.(Bazi ozel sembol tanımlama tipleri alır) Asagida orneklerle açıklamaya çalıştım.

:sembol => :sembol :’#{“ara”} deger almaz’ => :”#{“ara”} deger almaz” :”#{“ara”} deger” => :”ara deger” %s(#{“ara”} deger almaz) => :”#{“ara”} deger almaz”

Aralıklar 1..10 => 1’den 10’a kadar (10 dahil) 1…10 => 1’den 10’a kadar (10 haric) ‘a’..’z’ ‘a’…‘z’ (1..10) === 5 => dogru (1..10) === 10 => dogru (1…10) === 10 => yanlis (1..10) === 15 => yanlis

Diziler [1, 2, 3] %w(foo bar baz) %W(foo bar baz #{var})

Dizilerde index degerleri negatif deger alabilir. Bu dizinin orjinini sondan baslatir.

Sözlükler (Hashes)

{‘bir’=>1, ‘iki’=>2, ‘uc’=>3} { expr => expr…}

Değişkenler ve Sabitler

4 tip değişken etki alanı vardır. Değişkenin isminin başına gelen özel işaretlerle ve etki alanına göre yorumlayıcı tarafından anlaşılır.

1) Global değişkenler Tanım: $global_variable = 0 Uygulama boyunca yaşarlar. Özellikle ön tanımlı global değişkenler ile kullanılır. Hepsi ($) işareti ile başlar.

2) Sınıf Değişkenleri Tanım: @@class_variable = 0 Sınıf her yeni yaratılan örnekte bu değişkenin değeri yeni nesneye aktarılır. Singleton kalıbında kullanılabilir. Bir örnekle açıklayalım;

class Boom

  @@class_counter = 0
  def initialize
    @instance_counter = 0
  end

  def explode
    @@class_counter += 1
    @instance_counter += 1
    puts "@@class_counter => #{@@class_counter}"
    puts "@instance_counter => #{@instance_counter}"
  end
end

d1 = Boom.new
d1.explode()
d1.explode()

d2 = Boom.new
d2.explode()

3) Örnekleme(instance) Değişkenleri

4) Yerel Değişkenler