Skip to main content

🧩 Ruby’de Veri Tiplerini Anlamak: Temel Kavramlar ve Dinamik Yapı

Ruby’de veriler, nesneler olarak tanımlanır ve her biri belirli bir veri tipi (data type) ile temsil edilir. Bu rehber, Ruby’nin temel veri tiplerini, dinamik tipleme özelliğini ve tip dönüşüm yöntemlerini pratik örneklerle açıklar.


🧠 Bu Rehberde Ne Öğreneceksiniz?

  • Ruby’nin temel veri tipleri: Integer, Float, String, Boolean, Array, Symbol, Hash
  • Dinamik tip sisteminin nasıl çalıştığı
  • Tip dönüşüm yöntemleri: to_i, to_f, to_s
  • Tip kontrol metotları: class, kind_of?, is_a?
  • Gerçek örneklerle veri tipi kullanım senaryoları

🔢 1. Sayısal Veri Tipleri

Ruby’de sayılar iki temel tipte saklanır: Integer (tamsayı) ve Float (ondalıklı sayı).

🔹 Integer (Tamsayı)

Pozitif, negatif veya sıfır değerleri tutar. Virgül yerine _ kullanarak okunabilirliği artırabilirsiniz:

buyuk_sayi = 1_000_000
puts buyuk_sayi
# Çıktı: 1000000

💡 Modern Ruby sürümlerinde (2.4+), eski Fixnum ve Bignum sınıfları tek bir Integer altında birleşmiştir. Tamsayılar için pratik bir limit yoktur; belleğiniz yettiği sürece büyüyebilir.


🔹 Float (Ondalıklı Sayılar)

Ondalık nokta içeren sayıları temsil eder:

ortalama = 17.3
puts ortalama
# Çıktı: 17.3

💬 Bir Integer ile Float toplarsanız sonuç her zaman Float olur.

puts 5 + 3.14 # 8.14

Ruby, matematikteki gerçek sayı mantığına yakın çalışır: 5 + π8.14 gibi.


🧮 2. Mantıksal ve Metinsel Tipler

🔹 Boolean (Mantıksal)

true ve false değerleriyle çalışır. Karşılaştırmalarda sıklıkla kullanılır:

sonuc = 5 > 8
puts sonuc
# Çıktı: false

💡 Ruby’de nil de false gibi davranır, ama teknik olarak NilClass tipindedir.


🔹 String (Metin)

Bir veya daha fazla karakterden oluşur, ' ' veya " " arasında tanımlanır:

mesaj = "Merhaba, Rabisu!"
puts mesaj

Interpolasyon (#) ile değişkenleri doğrudan metin içine ekleyebilirsiniz:

isim = "Kadir"
puts "Hoş geldin, #{isim}!"

💬 Interpolasyon sadece çift tırnak (" ") içinde çalışır.


🧱 3. Koleksiyon ve Tanımlayıcı Tipler

🔹 Array (Dizi)

Birden fazla değeri tek bir değişkende saklamanızı sağlar. Dizilerde indeksleme 0’dan başlar.

veriler = ["Rabisu", 2025, ["cloud", "hosting"]]
puts veriler[2][0]
# Çıktı: cloud

💡 Ruby dizileri değiştirilebilirdir (mutable) ve farklı veri tiplerini bir arada tutabilir.


🔹 Hash (Sözlük / Harita)

Anahtar–değer (key–value) çiftleriyle veri saklar:

kullanici = {isim: "Sammy", rol: "Admin"}
puts kullanici[:isim]
# Çıktı: Sammy

Alternatif yazım:

sunucu = {:ip => "192.168.1.1", :durum => "aktif"}
puts sunucu[:durum]
# Çıktı: aktif

💬 Anahtar olarak Symbol kullanmak hem performans hem de bellek açısından avantaj sağlar.


🔹 Symbol (Sembol)

Sabit, değiştirilemez ve benzersiz tanımlayıcılardır:

:sunucu_adi
:port_numarasi

💡 Aynı sembol program boyunca bellekte tek bir kez oluşturulur. Bu, String’lere göre daha hızlı erişim sağlar.


🔄 4. Dinamik Tipleme ve Tip Dönüşümü

Ruby dinamik tipli (dynamically typed) bir dildir. Bir değişkenin tipi, ona atanan değere göre belirlenir:

degisken = 42
degisken = "Rabisu"
degisken = true

💬 Aynı değişken, program boyunca farklı tiplerde değerler tutabilir.

🔁 Tip Dönüşümü

Farklı tipler arasında işlem yapmadan önce dönüştürme gerekir:

"42".to_i   # 42
"3.14".to_f # 3.14
42.to_s # "42"

Kullanıcıdan veri alırken:

print "Oda uzunluğunu girin: "
uzunluk = gets.chop # String olarak gelir
uzunluk = uzunluk.to_f
puts uzunluk * 2

💡 Statik dillerde (C, Java) böyle bir dönüşüm için yeni değişken gerekirken, Ruby aynı değişkeni yeniden kullanabilir.


🔍 5. Veri Tipini Belirleme

Ruby’de her şey bir nesnedir. Veri tipini görmek için .class metodunu kullanabilirsiniz:

42.class         # Integer
3.14.class # Float
["a","b"].class # Array
true.class # TrueClass
nil.class # NilClass

Bir verinin belirli bir sınıfa ait olup olmadığını kind_of? veya is_a? ile kontrol edebilirsiniz:

veri = ["cloud", "server"]
puts veri.is_a?(Array) # true
puts veri.kind_of?(Hash) # false

Bu yöntemler, API veya dış kaynaklardan gelen verilerin doğruluğunu test etmek için idealdir.


💬 Sıkça Sorulan Sorular (SSS)

1️⃣ Ruby neden dinamik tipleme kullanır? Dinamik tipleme, hızlı geliştirme ve prototipleme sağlar. Tipler çalışma zamanında belirlenir, bu da esnekliği artırır.

2️⃣ Symbol ve String farkı nedir? String değiştirilebilir (mutable), her kopyası bellekte ayrı saklanır. Symbol ise sabittir (immutable) ve aynı sembol bellekte yalnızca bir kez oluşturulur.

3️⃣ nil hangi tiptedir? nil özel bir değerdir ve NilClass tipindedir. Mantıksal olarak false gibidir ama ondan farklıdır.

4️⃣ Ruby’de tamsayı limiti var mı? Ruby 2.4+ sürümünde Integer sınıfı hem küçük hem büyük sayıları otomatik işler. Pratikte sınır yoktur; yalnızca sistem belleğiyle sınırlanır.

5️⃣ Farklı tipleri toplarsam ne olur? Ruby otomatik dönüştürme yapmaz. 5 + "5" hatadır. Ama "5".to_i + 5 veya 5.to_s + "5" geçerlidir.


🎯 Sonuç

Ruby, veri tipleriyle ilgili esnek ve güçlü bir dil yapısına sahiptir. Temel tipleri anlamak ve dinamik tip sistemine hakim olmak, hatasız ve sürdürülebilir kod yazmanın temelidir. Doğru tip dönüşümleri (to_i, to_f, to_s) ve kontrol metotları (class, is_a?) ile kodlarınız daha güvenilir hale gelir.

💡 Deneyin: Rabisu Bulut üzerinde bir Ruby ortamı kurarak veri tiplerini test edin ve uygulamada deneyim kazanın.