Ruby Dersleri | Değişkenler (Variable) #2

Talhaa05

Yeni üye
14 Mar 2022
26
25
G3oa9Tz.png


Merhabalar, Değerli TürkHackTeam Ailesi!
Geçenlerde Ruby'nin derslerinin #1'sini işledik.
Bu konumuzda Ruby Derslerine devam ediyoruz!
Keyifli Okumalar!
vcRcLMS.png


Değişkenler
Değişken denen şey, yani Variable, nesneye atanmış bir işaretçidir.
Değişkenlerin farklı farklı türleri vardır. Birazdan bunlara değineceğiz. En basit anlamda değişken tanımlamak;

Ruby:
a = 5
user_email = "[email protected]"
şeklinde olur. Yukarıdaki örnekte a ve user_email değişkenin adıdır. Değeri ise eşittir işaretinden sonra gelendir.
Yani yukarıda; a ya sayı olarak 5 ve user_email e metin olarak [email protected] değerleri atanmıştır.

Ruby Duck Typing şeklinde çalışır. Yani atama yapmadan önce ne tür bir değer ataması yapacağımızı belirtmemize gerek yok. Ruby zaten a = 5 dediğimizde, "Hmmm, bu değer Fixnum türünde" diye değerlendirir.

Duck Typing Nedir? : Bilgisayar programlamasında Duck Typing bir yazılım kavramıdır, bir nesnenin belirli bir amaç için kullanılıp kullanılamayacağını belirlemek için bir uygulamadır. Kavramın adı Ördek testinden gelmektedir testin mantığı kısaca "Ördek gibi yürüyorsa ve ördek gibi vaklıyorsa, o zaman bir ördek olmalıdır" cümlesidir.

Metinsel Atamalar ve Tırnak Kullanımı
Evet, geneler olarak değişken nasıl atandığını gördük.
Yeri gelmişken hızlıca bir konuya değinmek istiyorum. Metinsel değişkenler tanımlarken (String) eşitlik esnasında tek ya da çift tırnak işareti kullanabiliriz. Fakat aradaki farkı bilerek kullanmamız gerekir.

String içinde değişken kullanımı yaptığımız zaman yani;
Ruby:
a = 30
puts "Siz #{a} yaşındasınız"
gibi bir durumda, gördüğünüz gibi #{a} şeklinde yazı içinde değişken kullandık.
Bu kodun çıktısı aşağıdaki gibi olacak.
Kod:
Siz 30 yaşındasınız
Format olarak Ruby'de, #{BU KISIMDA KOD ÇALIŞIR} ş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;
Ruby:
a = 30
puts "Siz #{a+2} yaşındasınız"
Yukarıdaki örnekte Ruby a+2 komutunu çalıştıracaktır ve sonuç olarak 32 değerini bulacaktır ve bunu ekrana yazdıracak.
Yani sonuç:
Kod:
Siz 32 yaşındasınız
şeklinde olacaktır. Ancak aynı kodu tek tırnak kullanarak yapmış olsaydık;
Ruby:
a = 30
puts 'Siz #{a} yaşındasınız'
çıktısı:
Kod:
Siz #{a} yaşındasınız
olacaktı. Tek tırnak içinde bu işlem çalışmaz!

F3beZqk.png

Local (Bölgesel) Değişkenler
Bölgesel ya da Yerel değişkenler, bir scope içindeki değişkenlerdir. Scope nedir? 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.

Ruby:
out_text = "Talha"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}"
end

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

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şilebilir.
Ruby:
$today = "Pazartesi"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}, bugün #{$today}"
  puts out_text
end

puts "Bugün günlerden ne? #{$today}"
kullanici("Talha")  # Merhaba Talha, bugün Pazartesi
Bu örnekteki Global değişken "$today" değişkenidir.
F3beZqk.png

Constants (Sabitler)
Sabit nedir? Değiştirelemeyendir. Yani bu tür değişkenler, ki bu değişken değildir :), 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.
Ruby:
My_Age = 18
your_age = 22

puts defined?(My_Age)    # constant
puts defined?(your_age)  # local-variable
My_Age sabit, your_age de yerel değişken...

Ruby'de ilginç bir durum daha var. Constant'lar mutable yani değiştirilebilir. Nasıl yani?
Ruby:
My_Age = 18

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 18

My_Age = 22

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 22
ama warning yani uyarı mesajı aldık!
Kod:
untitled:6: warning: already initialized constant My_Age
untitled:1: warning: previous definition of My_Age was here
My_Age sabiti 6.satırda zaten tanımlıydı. Önceki değeri de 1.satırda diye bize ikaz etti Ruby yorumlayıcısı.
F3beZqk.png

Paralel Atama
Hemen ne demek istediğimi bir örnekle açayım:
Ruby:
x, y, z = 5, 11, 88
puts x # 5
puts y # 11
puts z # 88

a, b, c = "Turkhackteam", 5.81, 1972
puts a # Turkhackteam
puts b # 5.81
puts c # 1972
x, y, z = 5, 11, 88 derken tek harekette x = 5, y = 11 ve z = 88 yaptık. İşte bu paralel atama.
F3beZqk.png

Instance Değişkeni
Instance dediğimiz şey Class'dan türemiş olan nesnedir.
Bu konuyu detaylı olarak ileride inceleyeceğiz. Sadece ön bilgi olması adına değiniyorum. @ işareti ile başlarlar.

Ruby:
class User
  attr_accessor :name
  def initialize(name)
    @name = name
  end

  def greet
    "Merhaba #{@name}"
  end
end

u = User.new("Talha")
puts u.greet         # Merhaba Talha
puts u.name          # Talha
u.name diye çağırdığımız şey User class'ından türemiş olan u nesnesinin Instance Variable'ı yani türemiş nesneye ait değişkenidir. Fazla takılmayın, Class konusunda bol bol değineceğiz...
F3beZqk.png

Class Değişkenleri
Class'a ait değişkendir. Dikkat edin burada türeyen bir şey yok. @@ ile başlar. Kullanmadan önce bu değişkeni mutlaka "init" etmelisiniz (Yani ön tanımlama yapmalısınız)
Ruby:
class User
  attr_accessor :name
  @@instance_count = 0   # Kullanmadan önce init ettim
  def initialize(name)
    @name = name
    @@instance_count += 1 # Class'dan her instance oluşmasında sayacı 1 arttırıyorum
  end

  def greet
    "Merhaba #{@name}"
  end

  def self.instance_count # burası öneli
    @@instance_count
  end
end

user1 = User.new("Uğur")
user2 = User.new("Ezel")
user3 = User.new("Yeşim")

puts "Kaç defa User instance'ı oldu? #{User.instance_count}" # Kaç defa User instance'ı oldu? 3
Eğer kafanız karıştıysa sorun değil, Class konusunda hepsinin üzerinden tekrar geçeceğiz.

Sonuç
gBPwFuWw_o.png

Bu dersimizde ruby'nin değişkenlerini inceledik.
Konuyu sevdiyseniz beğenip yorum atabilirsiniz.

Bir Önceki Ders;
Ruby Dersleri | Syntax (Söz Dizimi) #1
İyi Forumlar!
 

TurkGokay

Uzman üye
4 Ara 2022
1,020
542
Kemalizm
G3oa9Tz.png


Merhabalar, Değerli TürkHackTeam Ailesi!
Geçenlerde Ruby'nin derslerinin #1'sini işledik.
Bu konumuzda Ruby Derslerine devam ediyoruz!
Keyifli Okumalar!
vcRcLMS.png


Değişkenler
Değişken denen şey, yani Variable, nesneye atanmış bir işaretçidir.
Değişkenlerin farklı farklı türleri vardır. Birazdan bunlara değineceğiz. En basit anlamda değişken tanımlamak;

Ruby:
a = 5
user_email = "[email protected]"
şeklinde olur. Yukarıdaki örnekte a ve user_email değişkenin adıdır. Değeri ise eşittir işaretinden sonra gelendir.
Yani yukarıda; a ya sayı olarak 5 ve user_email e metin olarak [email protected] değerleri atanmıştır.

Ruby Duck Typing şeklinde çalışır. Yani atama yapmadan önce ne tür bir değer ataması yapacağımızı belirtmemize gerek yok. Ruby zaten a = 5 dediğimizde, "Hmmm, bu değer Fixnum türünde" diye değerlendirir.

Duck Typing Nedir? : Bilgisayar programlamasında Duck Typing bir yazılım kavramıdır, bir nesnenin belirli bir amaç için kullanılıp kullanılamayacağını belirlemek için bir uygulamadır. Kavramın adı Ördek testinden gelmektedir testin mantığı kısaca "Ördek gibi yürüyorsa ve ördek gibi vaklıyorsa, o zaman bir ördek olmalıdır" cümlesidir.

Metinsel Atamalar ve Tırnak Kullanımı
Evet, geneler olarak değişken nasıl atandığını gördük.
Yeri gelmişken hızlıca bir konuya değinmek istiyorum. Metinsel değişkenler tanımlarken (String) eşitlik esnasında tek ya da çift tırnak işareti kullanabiliriz. Fakat aradaki farkı bilerek kullanmamız gerekir.

String içinde değişken kullanımı yaptığımız zaman yani;
Ruby:
a = 30
puts "Siz #{a} yaşındasınız"
gibi bir durumda, gördüğünüz gibi #{a} şeklinde yazı içinde değişken kullandık.
Bu kodun çıktısı aşağıdaki gibi olacak.
Kod:
Siz 30 yaşındasınız
Format olarak Ruby'de, #{BU KISIMDA KOD ÇALIŞIR} ş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;
Ruby:
a = 30
puts "Siz #{a+2} yaşındasınız"
Yukarıdaki örnekte Ruby a+2 komutunu çalıştıracaktır ve sonuç olarak 32 değerini bulacaktır ve bunu ekrana yazdıracak.
Yani sonuç:
Kod:
Siz 32 yaşındasınız
şeklinde olacaktır. Ancak aynı kodu tek tırnak kullanarak yapmış olsaydık;
Ruby:
a = 30
puts 'Siz #{a} yaşındasınız'
çıktısı:
Kod:
Siz #{a} yaşındasınız
olacaktı. Tek tırnak içinde bu işlem çalışmaz!

F3beZqk.png

Local (Bölgesel) Değişkenler
Bölgesel ya da Yerel değişkenler, bir scope içindeki değişkenlerdir. Scope nedir? 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.

Ruby:
out_text = "Talha"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}"
end

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

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şilebilir.
Ruby:
$today = "Pazartesi"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}, bugün #{$today}"
  puts out_text
end

puts "Bugün günlerden ne? #{$today}"
kullanici("Talha")  # Merhaba Talha, bugün Pazartesi
Bu örnekteki Global değişken "$today" değişkenidir.
F3beZqk.png

Constants (Sabitler)
Sabit nedir? Değiştirelemeyendir. Yani bu tür değişkenler, ki bu değişken değildir :), 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.
Ruby:
My_Age = 18
your_age = 22

puts defined?(My_Age)    # constant
puts defined?(your_age)  # local-variable
My_Age sabit, your_age de yerel değişken...

Ruby'de ilginç bir durum daha var. Constant'lar mutable yani değiştirilebilir. Nasıl yani?
Ruby:
My_Age = 18

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 18

My_Age = 22

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 22
ama warning yani uyarı mesajı aldık!
Kod:
untitled:6: warning: already initialized constant My_Age
untitled:1: warning: previous definition of My_Age was here
My_Age sabiti 6.satırda zaten tanımlıydı. Önceki değeri de 1.satırda diye bize ikaz etti Ruby yorumlayıcısı.
F3beZqk.png

Paralel Atama
Hemen ne demek istediğimi bir örnekle açayım:
Ruby:
x, y, z = 5, 11, 88
puts x # 5
puts y # 11
puts z # 88

a, b, c = "Turkhackteam", 5.81, 1972
puts a # Turkhackteam
puts b # 5.81
puts c # 1972
x, y, z = 5, 11, 88 derken tek harekette x = 5, y = 11 ve z = 88 yaptık. İşte bu paralel atama.
F3beZqk.png

Instance Değişkeni
Instance dediğimiz şey Class'dan türemiş olan nesnedir.
Bu konuyu detaylı olarak ileride inceleyeceğiz. Sadece ön bilgi olması adına değiniyorum. @ işareti ile başlarlar.

Ruby:
class User
  attr_accessor :name
  def initialize(name)
    @name = name
  end

  def greet
    "Merhaba #{@name}"
  end
end

u = User.new("Talha")
puts u.greet         # Merhaba Talha
puts u.name          # Talha
u.name diye çağırdığımız şey User class'ından türemiş olan u nesnesinin Instance Variable'ı yani türemiş nesneye ait değişkenidir. Fazla takılmayın, Class konusunda bol bol değineceğiz...
F3beZqk.png

Class Değişkenleri
Class'a ait değişkendir. Dikkat edin burada türeyen bir şey yok. @@ ile başlar. Kullanmadan önce bu değişkeni mutlaka "init" etmelisiniz (Yani ön tanımlama yapmalısınız)
Ruby:
class User
  attr_accessor :name
  @@instance_count = 0   # Kullanmadan önce init ettim
  def initialize(name)
    @name = name
    @@instance_count += 1 # Class'dan her instance oluşmasında sayacı 1 arttırıyorum
  end

  def greet
    "Merhaba #{@name}"
  end

  def self.instance_count # burası öneli
    @@instance_count
  end
end

user1 = User.new("Uğur")
user2 = User.new("Ezel")
user3 = User.new("Yeşim")

puts "Kaç defa User instance'ı oldu? #{User.instance_count}" # Kaç defa User instance'ı oldu? 3
Eğer kafanız karıştıysa sorun değil, Class konusunda hepsinin üzerinden tekrar geçeceğiz.

Sonuç
gBPwFuWw_o.png

Bu dersimizde ruby'nin değişkenlerini inceledik.
Konuyu sevdiyseniz beğenip yorum atabilirsiniz.

Bir Önceki Ders;
Ruby Dersleri | Syntax (Söz Dizimi) #1
İyi Forumlar!
elinize sağlık okurken yaşlandım 😁 part 3 bekliyorumpart 2 bu kadar hızlı geldiği için teşekkür ederim
 

DeathWarrior01

Uzman üye
14 Ocak 2021
1,733
1,075
Evren
G3oa9Tz.png


Merhabalar, Değerli TürkHackTeam Ailesi!
Geçenlerde Ruby'nin derslerinin #1'sini işledik.
Bu konumuzda Ruby Derslerine devam ediyoruz!
Keyifli Okumalar!
vcRcLMS.png


Değişkenler
Değişken denen şey, yani Variable, nesneye atanmış bir işaretçidir.
Değişkenlerin farklı farklı türleri vardır. Birazdan bunlara değineceğiz. En basit anlamda değişken tanımlamak;

Ruby:
a = 5
user_email = "[email protected]"
şeklinde olur. Yukarıdaki örnekte a ve user_email değişkenin adıdır. Değeri ise eşittir işaretinden sonra gelendir.
Yani yukarıda; a ya sayı olarak 5 ve user_email e metin olarak [email protected] değerleri atanmıştır.

Ruby Duck Typing şeklinde çalışır. Yani atama yapmadan önce ne tür bir değer ataması yapacağımızı belirtmemize gerek yok. Ruby zaten a = 5 dediğimizde, "Hmmm, bu değer Fixnum türünde" diye değerlendirir.

Duck Typing Nedir? : Bilgisayar programlamasında Duck Typing bir yazılım kavramıdır, bir nesnenin belirli bir amaç için kullanılıp kullanılamayacağını belirlemek için bir uygulamadır. Kavramın adı Ördek testinden gelmektedir testin mantığı kısaca "Ördek gibi yürüyorsa ve ördek gibi vaklıyorsa, o zaman bir ördek olmalıdır" cümlesidir.

Metinsel Atamalar ve Tırnak Kullanımı
Evet, geneler olarak değişken nasıl atandığını gördük.
Yeri gelmişken hızlıca bir konuya değinmek istiyorum. Metinsel değişkenler tanımlarken (String) eşitlik esnasında tek ya da çift tırnak işareti kullanabiliriz. Fakat aradaki farkı bilerek kullanmamız gerekir.

String içinde değişken kullanımı yaptığımız zaman yani;
Ruby:
a = 30
puts "Siz #{a} yaşındasınız"
gibi bir durumda, gördüğünüz gibi #{a} şeklinde yazı içinde değişken kullandık.
Bu kodun çıktısı aşağıdaki gibi olacak.
Kod:
Siz 30 yaşındasınız
Format olarak Ruby'de, #{BU KISIMDA KOD ÇALIŞIR} ş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;
Ruby:
a = 30
puts "Siz #{a+2} yaşındasınız"
Yukarıdaki örnekte Ruby a+2 komutunu çalıştıracaktır ve sonuç olarak 32 değerini bulacaktır ve bunu ekrana yazdıracak.
Yani sonuç:
Kod:
Siz 32 yaşındasınız
şeklinde olacaktır. Ancak aynı kodu tek tırnak kullanarak yapmış olsaydık;
Ruby:
a = 30
puts 'Siz #{a} yaşındasınız'
çıktısı:
Kod:
Siz #{a} yaşındasınız
olacaktı. Tek tırnak içinde bu işlem çalışmaz!

F3beZqk.png

Local (Bölgesel) Değişkenler
Bölgesel ya da Yerel değişkenler, bir scope içindeki değişkenlerdir. Scope nedir? 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.

Ruby:
out_text = "Talha"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}"
end

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

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şilebilir.
Ruby:
$today = "Pazartesi"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}, bugün #{$today}"
  puts out_text
end

puts "Bugün günlerden ne? #{$today}"
kullanici("Talha")  # Merhaba Talha, bugün Pazartesi
Bu örnekteki Global değişken "$today" değişkenidir.
F3beZqk.png

Constants (Sabitler)
Sabit nedir? Değiştirelemeyendir. Yani bu tür değişkenler, ki bu değişken değildir :), 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.
Ruby:
My_Age = 18
your_age = 22

puts defined?(My_Age)    # constant
puts defined?(your_age)  # local-variable
My_Age sabit, your_age de yerel değişken...

Ruby'de ilginç bir durum daha var. Constant'lar mutable yani değiştirilebilir. Nasıl yani?
Ruby:
My_Age = 18

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 18

My_Age = 22

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 22
ama warning yani uyarı mesajı aldık!
Kod:
untitled:6: warning: already initialized constant My_Age
untitled:1: warning: previous definition of My_Age was here
My_Age sabiti 6.satırda zaten tanımlıydı. Önceki değeri de 1.satırda diye bize ikaz etti Ruby yorumlayıcısı.
F3beZqk.png

Paralel Atama
Hemen ne demek istediğimi bir örnekle açayım:
Ruby:
x, y, z = 5, 11, 88
puts x # 5
puts y # 11
puts z # 88

a, b, c = "Turkhackteam", 5.81, 1972
puts a # Turkhackteam
puts b # 5.81
puts c # 1972
x, y, z = 5, 11, 88 derken tek harekette x = 5, y = 11 ve z = 88 yaptık. İşte bu paralel atama.
F3beZqk.png

Instance Değişkeni
Instance dediğimiz şey Class'dan türemiş olan nesnedir.
Bu konuyu detaylı olarak ileride inceleyeceğiz. Sadece ön bilgi olması adına değiniyorum. @ işareti ile başlarlar.

Ruby:
class User
  attr_accessor :name
  def initialize(name)
    @name = name
  end

  def greet
    "Merhaba #{@name}"
  end
end

u = User.new("Talha")
puts u.greet         # Merhaba Talha
puts u.name          # Talha
u.name diye çağırdığımız şey User class'ından türemiş olan u nesnesinin Instance Variable'ı yani türemiş nesneye ait değişkenidir. Fazla takılmayın, Class konusunda bol bol değineceğiz...
F3beZqk.png

Class Değişkenleri
Class'a ait değişkendir. Dikkat edin burada türeyen bir şey yok. @@ ile başlar. Kullanmadan önce bu değişkeni mutlaka "init" etmelisiniz (Yani ön tanımlama yapmalısınız)
Ruby:
class User
  attr_accessor :name
  @@instance_count = 0   # Kullanmadan önce init ettim
  def initialize(name)
    @name = name
    @@instance_count += 1 # Class'dan her instance oluşmasında sayacı 1 arttırıyorum
  end

  def greet
    "Merhaba #{@name}"
  end

  def self.instance_count # burası öneli
    @@instance_count
  end
end

user1 = User.new("Uğur")
user2 = User.new("Ezel")
user3 = User.new("Yeşim")

puts "Kaç defa User instance'ı oldu? #{User.instance_count}" # Kaç defa User instance'ı oldu? 3
Eğer kafanız karıştıysa sorun değil, Class konusunda hepsinin üzerinden tekrar geçeceğiz.

Sonuç
gBPwFuWw_o.png

Bu dersimizde ruby'nin değişkenlerini inceledik.
Konuyu sevdiyseniz beğenip yorum atabilirsiniz.

Bir Önceki Ders;
Ruby Dersleri | Syntax (Söz Dizimi) #1
İyi Forumlar!
Eline sağlık python ve ruby gözümde hep kardeş ikili olarak canlanmıştır.Gerçektende birbirlerine benziyorlar : )
 

Talhaa05

Yeni üye
14 Mar 2022
26
25
Ellerinize sağlık
Serinin devamını bekliyorum çok hoşuma gitti ruby
Eline sağlık
Eline emeğine sağlık çok güzel olmuş
Eline sağlık python ve ruby gözümde hep kardeş ikili olarak canlanmıştır.Gerçektende birbirlerine benziyorlar : )
Yorumlarınız için teşekkür ederim :)

Seriyi en kısa zaman için yetiştirmeye çalışıyorum.
 

bozzturkk

Üye
25 Nis 2023
126
41
G3oa9Tz.png


Merhabalar, Değerli TürkHackTeam Ailesi!
Geçenlerde Ruby'nin derslerinin #1'sini işledik.
Bu konumuzda Ruby Derslerine devam ediyoruz!
Keyifli Okumalar!
vcRcLMS.png


Değişkenler
Değişken denen şey, yani Variable, nesneye atanmış bir işaretçidir.
Değişkenlerin farklı farklı türleri vardır. Birazdan bunlara değineceğiz. En basit anlamda değişken tanımlamak;

Ruby:
a = 5
user_email = "[email protected]"
şeklinde olur. Yukarıdaki örnekte a ve user_email değişkenin adıdır. Değeri ise eşittir işaretinden sonra gelendir.
Yani yukarıda; a ya sayı olarak 5 ve user_email e metin olarak [email protected] değerleri atanmıştır.

Ruby Duck Typing şeklinde çalışır. Yani atama yapmadan önce ne tür bir değer ataması yapacağımızı belirtmemize gerek yok. Ruby zaten a = 5 dediğimizde, "Hmmm, bu değer Fixnum türünde" diye değerlendirir.

Duck Typing Nedir? : Bilgisayar programlamasında Duck Typing bir yazılım kavramıdır, bir nesnenin belirli bir amaç için kullanılıp kullanılamayacağını belirlemek için bir uygulamadır. Kavramın adı Ördek testinden gelmektedir testin mantığı kısaca "Ördek gibi yürüyorsa ve ördek gibi vaklıyorsa, o zaman bir ördek olmalıdır" cümlesidir.

Metinsel Atamalar ve Tırnak Kullanımı
Evet, geneler olarak değişken nasıl atandığını gördük.
Yeri gelmişken hızlıca bir konuya değinmek istiyorum. Metinsel değişkenler tanımlarken (String) eşitlik esnasında tek ya da çift tırnak işareti kullanabiliriz. Fakat aradaki farkı bilerek kullanmamız gerekir.

String içinde değişken kullanımı yaptığımız zaman yani;
Ruby:
a = 30
puts "Siz #{a} yaşındasınız"
gibi bir durumda, gördüğünüz gibi #{a} şeklinde yazı içinde değişken kullandık.
Bu kodun çıktısı aşağıdaki gibi olacak.
Kod:
Siz 30 yaşındasınız
Format olarak Ruby'de, #{BU KISIMDA KOD ÇALIŞIR} ş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;
Ruby:
a = 30
puts "Siz #{a+2} yaşındasınız"
Yukarıdaki örnekte Ruby a+2 komutunu çalıştıracaktır ve sonuç olarak 32 değerini bulacaktır ve bunu ekrana yazdıracak.
Yani sonuç:
Kod:
Siz 32 yaşındasınız
şeklinde olacaktır. Ancak aynı kodu tek tırnak kullanarak yapmış olsaydık;
Ruby:
a = 30
puts 'Siz #{a} yaşındasınız'
çıktısı:
Kod:
Siz #{a} yaşındasınız
olacaktı. Tek tırnak içinde bu işlem çalışmaz!

F3beZqk.png

Local (Bölgesel) Değişkenler
Bölgesel ya da Yerel değişkenler, bir scope içindeki değişkenlerdir. Scope nedir? 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.

Ruby:
out_text = "Talha"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}"
end

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

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şilebilir.
Ruby:
$today = "Pazartesi"
def kullanici(user_name)
  out_text = "Merhaba #{user_name}, bugün #{$today}"
  puts out_text
end

puts "Bugün günlerden ne? #{$today}"
kullanici("Talha")  # Merhaba Talha, bugün Pazartesi
Bu örnekteki Global değişken "$today" değişkenidir.
F3beZqk.png

Constants (Sabitler)
Sabit nedir? Değiştirelemeyendir. Yani bu tür değişkenler, ki bu değişken değildir :), 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.
Ruby:
My_Age = 18
your_age = 22

puts defined?(My_Age)    # constant
puts defined?(your_age)  # local-variable
My_Age sabit, your_age de yerel değişken...

Ruby'de ilginç bir durum daha var. Constant'lar mutable yani değiştirilebilir. Nasıl yani?
Ruby:
My_Age = 18

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 18

My_Age = 22

puts defined?(My_Age)    # constant
puts "My_Age: #{My_Age}" # My_Age: 22
ama warning yani uyarı mesajı aldık!
Kod:
untitled:6: warning: already initialized constant My_Age
untitled:1: warning: previous definition of My_Age was here
My_Age sabiti 6.satırda zaten tanımlıydı. Önceki değeri de 1.satırda diye bize ikaz etti Ruby yorumlayıcısı.
F3beZqk.png

Paralel Atama
Hemen ne demek istediğimi bir örnekle açayım:
Ruby:
x, y, z = 5, 11, 88
puts x # 5
puts y # 11
puts z # 88

a, b, c = "Turkhackteam", 5.81, 1972
puts a # Turkhackteam
puts b # 5.81
puts c # 1972
x, y, z = 5, 11, 88 derken tek harekette x = 5, y = 11 ve z = 88 yaptık. İşte bu paralel atama.
F3beZqk.png

Instance Değişkeni
Instance dediğimiz şey Class'dan türemiş olan nesnedir.
Bu konuyu detaylı olarak ileride inceleyeceğiz. Sadece ön bilgi olması adına değiniyorum. @ işareti ile başlarlar.

Ruby:
class User
  attr_accessor :name
  def initialize(name)
    @name = name
  end

  def greet
    "Merhaba #{@name}"
  end
end

u = User.new("Talha")
puts u.greet         # Merhaba Talha
puts u.name          # Talha
u.name diye çağırdığımız şey User class'ından türemiş olan u nesnesinin Instance Variable'ı yani türemiş nesneye ait değişkenidir. Fazla takılmayın, Class konusunda bol bol değineceğiz...
F3beZqk.png

Class Değişkenleri
Class'a ait değişkendir. Dikkat edin burada türeyen bir şey yok. @@ ile başlar. Kullanmadan önce bu değişkeni mutlaka "init" etmelisiniz (Yani ön tanımlama yapmalısınız)
Ruby:
class User
  attr_accessor :name
  @@instance_count = 0   # Kullanmadan önce init ettim
  def initialize(name)
    @name = name
    @@instance_count += 1 # Class'dan her instance oluşmasında sayacı 1 arttırıyorum
  end

  def greet
    "Merhaba #{@name}"
  end

  def self.instance_count # burası öneli
    @@instance_count
  end
end

user1 = User.new("Uğur")
user2 = User.new("Ezel")
user3 = User.new("Yeşim")

puts "Kaç defa User instance'ı oldu? #{User.instance_count}" # Kaç defa User instance'ı oldu? 3
Eğer kafanız karıştıysa sorun değil, Class konusunda hepsinin üzerinden tekrar geçeceğiz.

Sonuç
gBPwFuWw_o.png

Bu dersimizde ruby'nin değişkenlerini inceledik.
Konuyu sevdiyseniz beğenip yorum atabilirsiniz.

Bir Önceki Ders;
Ruby Dersleri | Syntax (Söz Dizimi) #1
İyi Forumlar!
Elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.