0
0
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
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol