Ruby’de Enumeratorler ve Döngüler

Ruby-Eğitim-Serisi

Merhaba arkadaşlar bu haftaki dersimizde Ruby’de Enumeratörler ve Döngülerden bahsedeceğiz ve artık gerçek anlamda Ruby’e özgü kod yazmaya ve bizlere sağladığı kullanışlı fonksiyonları tanımaya başlayacağız.

Bir önceki derslerimizde Ruby’de basit anlamda döngüleri nasıl kullanabileceğimiz hakkında bilgi sahibi olmuştuk, bu dersimizde ise döngülere biraz daha derinlemesine giriş yapacağız ve kendimize has, kişiselleştirebileceğimiz döngüler oluşturacağız.

Biraz sonra örneklerle bahsetmeye başlayacağım döngü çeşitlerinin detaylı kullanımlarını videoyu izleyerek de öğrenebilirsiniz, burada biraz daha basit ve kısa bir anlatım kullanmayı tercih ettim.

Döngü Çeşitleri

1 – Times

Belli bir sayıda ekrana çıktı almak istediğimiz durumlarda kullanabileceğimiz bir Enumeratördür.

Ekran Resmi 2014-12-05 16.28.57

Yukarıdaki kod satırlarında, ekrana 5 defalığına bir işlem yapmak istediğimizi belirtiyoruz, “i” değişkeni de o an için bulunduğumuz döngünün indeks‘i olmuş oluyor ve puts ifadesi ile ekrana çıktısını almak istediğimiz zamanda 0,1,2,3,4 rakamlarını ekranda görüyoruz.

Not : Yukarıda kullandığımız “times” metodunun ve bundan sonra kullanacağımız her bir metodun hangi nesneden türediğini aşağıdaki komut satırını kullanarak görebilirsiniz.

Ekran Resmi 2014-12-05 16.34.47

Yukarıdaki kod satırının çıktısı olarak da bu dersimizin de başlığı olan “Enumeratör” ifadesini görebilirsiniz. Ruby’de bu şekilde Enumeratör olarak görünen her bir ifadeyi döngü olarak kullanabiliyoruz.

Döngüleri yazarken kullanabileceğimiz birden fazla yazım tekniği var, eğer döngülerimizi çok satırlı olarak yazmak istiyorsak, az önceki örnekte de gördüğünüz gibi do-end ifadelerini kullanabilirsiniz.

Ekran Resmi 2014-12-05 16.28.57

Eğer döngümüzü tek satırda halletmek istiyorsak da aşağıdaki yazım tekniğini kullanabilirsiniz.

Ekran Resmi 2014-12-05 16.50.08

Yukarıdaki örneklerde do-end ile { } arasındaki farkı şu şekilde özetleyebiliriz, { } işlem önceliğinin ön planda olduğu durumlarda tercih ediyoruz.

2 – Downto

Burada herhangi bir fixnum’dan başka bir fixnum’a kadar sayısı er er azaltacaktır.

Ekran Resmi 2014-12-05 17.09.13

Yukarıdaki kod satırının çıktısı 5,4,3,2,1,0 olacaktır

3 – Upto

Burada ise Downto’nun aksine rakamı azaltmak yerine arttıracaktır.

Ekran Resmi 2014-12-05 17.11.11

Yukarıdaki ifadenin çıktısı 5,6,7,8,9,10,11,12,13 olacaktır.

4- Step

Belirli bir işlemi belirlediğimiz bir sayı kadar arttırarak gitmesini sağlamak içinde Step Enumeratörünü kullanıyoruz.

Ekran Resmi 2014-12-05 17.14.40

Yukarıdaki ifade de 5 den 12 ye kadar 2 şer 2 şer gitmesi gerektiğini söylüyoruz ve çıktı 5,7,9,11,13 şeklinde olacaktır.

5- Each

Array’in herbir elemanını tek tek dolaşmamız gerektiği durumlarda kullanıyoruz.

Ekran Resmi 2014-12-05 17.25.08

Yukarıdaki ifade de 2 den 10 kadar olan sayılar arasında sırasıyla geçiş yapılıyor ve ekrana basılan çıktı, 2,3,4,5,6,7,8,9,10 olacaktır.

Aynı işlemi array ile de yapabiliriz.

Ekran Resmi 2014-12-05 17.27.36

İfadenin çıktısı 7,1,4,5,2 şeklinde olacaktır.

6- Reduce

Genel de çok fazla elemanı olan bir işlemden tek bir çıktı üretmek için kullanılıyor.

Ekran Resmi 2014-12-05 17.49.37

Yukarıdaki ifade de, reduce(0) vererek başlangıç değerini belirledik ve dizimizin 1 den 10 a kadar olacağını söyledik, döngü süresince de getirilen satıları toplam değişkenine yükledik ve döngü sonucunda ise ifadenin çıktısı 55 olacaktır.

7- Map

Dizideki her bir elemana bir işlem uygulayıp bu işlemin sonucunda da bir dizi elde etmemiz gerektiği durumlarda Map’i kullanıyoruz.

Ekran Resmi 2014-12-05 17.58.26

Yukarıdaki kod satırlarında da gördüğünüz üzere dizideki her bir elemanın değerini 2 arttırarak ekrana yine dizi şeklinde basacaktır, yani çıktı [3,4,5,6,7] olacaktır.

8- Select

Her hangi bir diziden sadece belli bir grubu almak istediğimiz durumlarda ise Select Enumeratörünü kullanabiliyoruz.

Ekran Resmi 2014-12-06 23.04.03

Yukarıdaki kod parçacığının çıktısı ise [4,5,6] olacaktır çünkü select ifadesini kullanırken sadece 3 den büyük rakamları bir araya getirmesini istedik.

Evet, arkadaşlar bugünkü dersimizin de sonuna geldik yukarıda bahsettiğim ifadelerin detaylı kullanımlarını videolu içeriğimizde bulabilirsiniz, bir sonraki dersimizde görüşmek dileği ile… Hoşçakalın.. 🙂

Onur Eren Elibol Yazar Hakkında