Merhaba ben Bunjo, bu konuda Ruby dilinde olan "try-catch" ve "multidimensional arrays" kavramlarını anlatacağım.
Bir önceki eğitimler;
"net/http": Üst Düzey Ruby Eğitimi #5 (net/http)
"tk": Üst Düzey Ruby Eğitimi #4 (Görsel Programlama)
"regexp": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"functions": Üst Düzey Ruby Eğitimi #3 (Regexp, Fonksiyonlar)
"symbols": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"structs": Üst Düzey Ruby Eğitimi #2 (Semboller, Struct)
"variables": Üst Düzey Ruby Eğitimi #1 (Değişkenler, Puts)
Try-Catch Kullanımı
Ruby'de catch ve throw ifadeleri, programın normal akışını kesmek ve belirli bir noktadan diğerine atlamak için kullanılır. catch ve throw beraber kullanılarak benzer işlevi gerçekleştirirler.
Ruby:
def find_number numbers, target
result = catch :found do
numbers.each do |number|
if number == target
throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
end
end
"Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
end
puts result
end
numbers = [1, 2, 3, 4, 5]
find_number numbers, 3
Çıktı:
Eğer "number" listesinde olmayan bir değer gönderseydik:
Ruby:
def find_number numbers, target
result = catch :found do
numbers.each do |number|
if number == target
throw :found, "#{target} bulundu!" # Hedef sayıyı bulduğumuzda atlamak için throw kullanılır
end
end
"Hedef sayı bulunamadı." # Eğer hedef sayı bulunamazsa, bu değer catch bloğunun değeri olacaktır
end
puts result
end
numbers = [1, 2, 3, 4, 5]
find_number numbers, 1936
Çıktı:
Not: Normal koşullarda bunu daha önceden false olarak tanımladığımız bir bool ifadesini while döngüsünün içinde if koşuluna sokup 3'e eşit olduğunda true döndürerekte yapabilirdik ama Ruby dilinin bize sağlamış olduğu esnekliklerle beraber sağladığı hız avantajları da vardır, tabii ki yukarıdaki basit bir örnek olsa bile throw-catch ifadeleri büyük datalarla çalışacağınız zaman büyük avantaj sağlayabilir bende bundan dolayı bu kadar detaya girdim.
Multidimensional Arrays
Kısacası "Çok Boyutlu Diziler" anlamına gelir. Ruby'de çok boyutlu diziler, iç içe yerleştirilmiş dizilerdir. Bu, her bir elemanın başka bir dizi olabileceği anlamına gelir. Çok boyutlu diziler, özellikle matrisler veya tablolar gibi iki boyutlu veri yapılarını temsil etmek için kullanılır. Ruby'de çok boyutlu diziler oluşturmak oldukça basittir.
Not: Normal koşullarda bunu daha önceden false olarak tanımladığımız bir bool ifadesini while döngüsünün içinde if koşuluna sokup 3'e eşit olduğunda true döndürerekte yapabilirdik ama Ruby dilinin bize sağlamış olduğu esnekliklerle beraber sağladığı hız avantajları da vardır, tabii ki yukarıdaki basit bir örnek olsa bile throw-catch ifadeleri büyük datalarla çalışacağınız zaman büyük avantaj sağlayabilir bende bundan dolayı bu kadar detaya girdim.
Multidimensional Arrays
Kısacası "Çok Boyutlu Diziler" anlamına gelir. Ruby'de çok boyutlu diziler, iç içe yerleştirilmiş dizilerdir. Bu, her bir elemanın başka bir dizi olabileceği anlamına gelir. Çok boyutlu diziler, özellikle matrisler veya tablolar gibi iki boyutlu veri yapılarını temsil etmek için kullanılır. Ruby'de çok boyutlu diziler oluşturmak oldukça basittir.
Ruby:
# İki boyutlu dizi oluşturma
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Elemanlara erişim
puts matrix[0][0] # 1
puts matrix[1][2] # 6
puts matrix[2][1] # 8
Ruby:
# Üç boyutlu dizi oluşturma
cube = [
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
]
]
# Elemanlara erişim
puts cube[0][1][0] # 3
puts cube[1][0][1] # 6
Çok boyutlu dizilerde fazla detaya girmiyorum bu üst düzey bir eğitim 0'dan programlama eğitimi değil. Kısa olarak dizi indekslemesini açıklayayım listenin içinde olan elemanlara erişmek için örneğin matrix = [1,2,3] olarak bir liste(dizi) tanımlarsak bu listedeki 1 elemanını çağırmak için matrix[0] kullanırım yani elemanlar 0'dan başlayarak numaralandırılır, çok boyutlu dizilere gelirsek de bu yine aynı şekildedir dizi içinde dizi vardır, her dizi bir elemandır ve "matrix[1][2]" ve "cube[1][0][1]" gibi şekillerde çağırılabilir.
Daha sonradan dizi ve hash metodlarını anlatacağım örneğin .append .pop .shfit gibi metodları daha sonra olan konularda göreceğiz bu konuda daha fazla kafa karıştırmak istemedim.
Okuduğunuz için teşekkür ederim kafanıza takılan bir soru için her zaman açığım.
Ukalaca yorumlar gelmeye devam ediyor umursamıyorum.
Daha sonradan dizi ve hash metodlarını anlatacağım örneğin .append .pop .shfit gibi metodları daha sonra olan konularda göreceğiz bu konuda daha fazla kafa karıştırmak istemedim.
Okuduğunuz için teşekkür ederim kafanıza takılan bir soru için her zaman açığım.
Ukalaca yorumlar gelmeye devam ediyor umursamıyorum.
Son düzenleme: