- 14 Mar 2022
- 27
- 25
Merhabalar, Değerli TürkHackTeam Ailesi!
Geçenlerde Ruby'nin derslerinin #1'sini işledik.
Bu konumuzda Ruby Derslerine devam ediyoruz!
Keyifli Okumalar!
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]"
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"
Bu kodun çıktısı aşağıdaki gibi olacak.
Kod:
Siz 30 yaşındasınız
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"
Yani sonuç:
Kod:
Siz 32 yaşındasınız
Ruby:
a = 30
puts 'Siz #{a} yaşındasınız'
Kod:
Siz #{a} yaşındasınız
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
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
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
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
Kod:
untitled:6: warning: already initialized constant My_Age
untitled:1: warning: previous definition of My_Age was here
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
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
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
Sonuç
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!