Ruby’de Fonksiyonlar (Metodlar)

Ruby-Eğitim-Serisi_ders3

Merhaba arkadaşlar, bir önceki makalemizde Ruby de kodlamaya giriş yapmıştık ve Ruby de değişken kullanımını, değişken tipleri gibi konular hakkında bilgiler edinmiştik bu yazımızda ise metodlara değineceğiz.

Ruby de metod tanımlarken diğer dillerin aksine parantez koymamıza gerek kalmıyor, eğer bir değişken yollamak istiyorsak o zaman parantezlere başvurabiliriz.

Not: Neden fonksiyon değil de metod dediğimize açıklık getirecek olursak, Ruby’de herşey bir nesne olduğu için yazdığımız her fonksiyonda aslında bir Class’a ait metod haline geliyor. Bu yüzden metod olarak isimlendirmemiz daha doğru olacaktır.

Ruby’de tanımlamış olduğumuz bir metoda ait örneği aşağıda görebilirsiniz.

Ekran Resmi 2014-11-07 21.54.09

Metodları tanımlarken nasıl parantez kullanmak zorunda kalmıyorsak aynı şekilde metodlarımızı çağırırken de parantez kullanmak zorunda kalmıyoruz, doğrudan metod ismini yazarak ulaşabiliyoruz.

Ruby’de tanımlamış olduğumuz her bir metod geriye bir değer göndermek zorunda, geriye döndürebileceği bir değer yoksa dahi nil değerini döndürecektir. Aşağıdaki örnek kod satırlarından da anlayacağınız üzere return ifadesini kullanmadan da aynı işlevi görüyor. Çünkü tanımlamış olduğumuz metod un içindeki son satırı Ruby geri gönderiyor.

Ekran-Resmi-2014-11-07-22.31.43

Ruby de değişken alabilen bir metoda örnek olması açısından aşağıdaki kod satırını inceleyebilirsiniz.

Ekran Resmi 2014-11-07 22.50.11

Aynı şekilde nasıl Ruby’de tanımlamış olduğumuz bir metodu çağırırken parantez kullanmak zorunda kalmıyorsak, parametre bekleyen bir metoda da değerleri parantez olmadan da gönderebiliyoruz.

Konuyla ilgili örnek kod satırını da aşağıda görebilirsiniz.

Ekran Resmi 2014-11-07 22.56.49

Yukarıdaki kod satırların geriye döndürdüğü ifadenin çıktısı “merhaba onur elibol”  şeklinde olacaktır.

Metod oluştururken kullanacağımız parametrelerin ve bu parametrelerin sayılarının belli olmadığı durumlarda aşağıdaki kod satırında gördüğünüz gibi parametrenin başına * ifadesini koymamız yeterli olacaktır. Bu sayede metodumuza istediğimiz sayıda parametre gönderebileceğiz.

Ekran Resmi 2014-11-08 15.08.04

Yukarıdaki kod satırlarının çıktısı [“onur”,”elibol”] şeklinde olacaktır, metod sınırsız sayıda parametre beklediği için gönderilen her bir parametreyi bir dizide toparlayıp bu şekilde saklıyor.

Sınırsız sayıda parametre alabilen metodumuza farklı bir örneği de aşağıda görebilirsiniz, bu sefer ilk parametre belli fakat daha sonra gelecek parametrelerin belli olmadığı durumlarda kullanabilirsiniz.

Ekran Resmi 2014-11-08 15.12.18

Ruby de göndereceğimiz parametrelerin sırasını da kendimiz belirleyebiliyoruz ve istediğimiz parametreyi istediğimiz sırada gönderebiliyoruz, bu tarz ifadelere isimli parametre diyoruz.

İsimli parametreye örnek kod satırlarını aşağıdan ulaşabilirsiniz.

Ekran Resmi 2014-11-08 15.28.57

Gördüğünüz gibi metodumuzu çağırırken istediğimiz sırada parametre gönderebiliyoruz.

İsimli parametreli metodlarımıza da istediğimiz sayıda parametre gönderebiliyoruz bu sefer parametremizin başına tek * değilde çift ** koymamız gerekiyor.

Konuyla ilgili örneği aşağıda görebilirsiniz.

Ekran Resmi 2014-11-08 15.31.33

Metoda bir çok parametre gönderiyoruz fakat Ruby bizim için bu parametrelerin hepsini ayıklayıp yerli yerine koyacaktır.

Son olarak da string ifadelerken metod oluşturmaya çalışacağız.

Ekran Resmi 2014-11-08 15.36.47

Yukarıdaki kod satırlarında gördüğünüz gibi, ilk olarak fonksiyon_ismi şeklinde bir değişken tanımlıyoruz ve bu değişkene ‘merhaba’ değerini atıyoruz, Ruby’nin metodlarından biri olan ve string değerlerden metod oluşturmamızı sağlayan define_method ifadesini kullanarak az önce oluşturduğumuz ‘merhaba’ String’ini taşıyan değişkenimizi metod haline getiriyoruz.

Böylece ‘merhaba’ basit bir string olmaktan ziyade kodumuzun herhangi bir yerinden ulaşılabilen bir metod haline geliyor.

Evet arkadaşlar bugünkü dersimizin de sonuna geldik, videoyu da izleyerek yukarıda anlatmış olduğum konuların ayrıntılı hallerine ulaşabilirsiniz, bir sonraki dersimizde görüşmek dileği ile.. 🙂

No Comments

Yorum Yap