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

0

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?

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

    Toplam 1 Cevap


    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
    

     

     

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

      üyelik gerektirir

      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