Ruby değişken (Variable) türleri nelerdir?

ergin (2539) 8 yıl önce sordu

Ruby değişken (Variable) türleri nelerdir?

Ruby' de değişken (Variable) türleri nasıl tanımlanır?

Ruby' de Sabitler (Constants) nasıl tanımlanır?

Toplam 1 cevap


ergin (2539) 8 yıl önce cevapladı

Ruby' de Değişken (Variable) nesneye atanmış bir işaretçidir diyebiliriz. Ruby'de herşey bir nesne yani Object. Bu nesnelere erişmek için Değişkenler bir aracıdır.

Farklı farklı türleri olmakla birlikte en basit anlamda değişken tanımlamak;

sayi = 10
metin = "www.uzmanim.net"

şeklinde tanımlanır. Yukarıdaki örnekte sayi ve metin değişkenin adıdır. Değeri ise eşittir işaretinden sonra gelendir.

Ruby Duck Typing şeklinde çalışır. Yani atama yapmadan önce ne tür bir değer ataması yapacağımızı belirtmemize gerek yoktur. Ruby  sayi = 10 dediğimizde, "Bu değer Fixnum türünde" diye değerlendirir.

Metinsel Atamalar ve Tırnak Kullanımı

Metinsel değişkenler tanımlarken (String) eşitlik esnasında tek ya da çift tırnak işareti kullanabiliriz. Fakat aradaki farkı bilerek kullanmak gerekir.

String içinde değişken kullanımı yaptığımız zaman yani;

yas = 20
p "#{yas} yaşındasınız"

gibi bir durumda, gördüğünüz gibi #{yas} şeklinde yazı içinde değişken kullandık. Bu kodun çıktısı aşağıdaki gibi olacaktır.

20 yaşındasınız


Ruby'de, #{BU KISIMDA KOD ÇALIŞIRTIR} şeklinde istediğimiz kodu çalıştırma yetkimiz var. Bu işlem sadece çift tırnak kullanımında geçerlidir. Başka bir örnek vermek gerekirse;

yas = 18
p "#{yas+2} yaşındasınız"

Yukarıdaki örnekte Ruby yas+2 komutunu çalıştıracaktır ve sonuç olarak 20 değerini bulacaktır ve bunu ekrana yazdıracaktır.

20 yaşındasınız

şeklinde olacaktır. Ancak aynı kodu tek tırnak kullanarak yapmış olsaydık;

yas = 18
p '#{yas} yaşındasınız'

çıktısı:

#{yas} yaşındasınız

olacaktı. Tek tırnak içinde bu işlem çalışmamaktadır!!!

 
Local (Bölgesel) Değişkenler

Bölgesel ya da Yerel değişkenler, bir scope içindeki değişkenlerdir. Scope, kodun çalıştığı bölge olarak tanımlayabiliriz. Bu tür değişkenler mutlaka küçük harfle ya da _ (underscore) işareti ile başlamalıdır. Kesinlike @, @@ ya da $ işareti gibi ön ekler alamazlar.

cikti = "ergin"
def isim_getir(ad)
  cikti = "Merhaba #{ad}"
end

p isim_getir("ergin")  # Merhaba ergin
p cikti                # ergin

 Program çalıştığında cikti değişkeninin değeri "ergin" olarak atanmaktadır. Daha sonra 6. satırda isim_getir method'u (fonksiyonu) çalıştığında, o methodun içerisinde cikti değişkeninin değeri değiştiriliyor gibi görünüyor. Daha sonra 7. satırda cikti değişkeninin değeri puts methodu ile ekrana yazdırılmaktadır. Burada çıktılara baktığınızda methodun içerisindeki cikti değişkenindeki değişim, programın en başında tanımladığımız cikti değişkenin değerini etkilememiştir. Method içerisinde kalmıştır. Burada method içerisindeki cikti değişkeni aslında local variable yani yerel değişken şeklinde çalışmaktadır.


Global (Genel) Değişkenler

$ işaretiyle başlayan tüm değişkenler Global değişkenlerdir. Kodun herhangi bir yerinde kullanılabilir ve erişilebilmektedir.

$bugun = "Pazartesi"
def isim_getir(ad)
  cikti = "Merhaba #{ad}, bugün #{$bugun}"
  puts cikti
end

puts "Bugün günlerden ne? #{$bugun}"
isim_getir("ergin")  # Merhaba ergin, bugün Pazartesi

Bu örnekteki Global değişken $bugun değişkenidir.


Constants (Sabitler)

Değiştirelemeyen ifadeler sabit olarak adlandırılır. Kural olarak mutlaka BÜYÜK HARF'le başlar! Bazen de tamamen büyük harflerden oluşur.

Yasim = 20
yasim = 24

puts Yasim    # constant (sabit)
puts yasim    # local-variable (değişken)

Yasim sabit, yasim de yerel değişken dir.


Instance Variable

Instance Class'dan türemiş olan nesnedir. @ işareti ile başlarlar.

class Kullanici
  attr_accessor :name
  def initialize(adiniz)
    @ad = adiniz
  end

  def isim
    "Merhaba #{@ad}"
  end
end

yeni = Kullanici.new("ergin")
puts yeni.isim