0
Ruby' de Method Definition (Fonksiyonlar) nasıl tanımlanır?
Ruby' de Methodlara parametre nasıl geçilir?
Ruby' de Methodlara Varsayılan Argümanlar (Default Arguments) nasıl atanır?
1
Diğer tüm programlama dillerinde olduğu gibi Ruby programlama dilinde de Methodlar (Fonksiyonlar) ufak program parçacıklarının veya ifadelerin bir araya toplanmasında oluşur.
Örneğin bildiğimiz matematik fonksiyonları yerine bundan böyle yerine method kullanacağız. Ruby neredeyse Obje (Nesne) ve Methodlardan (Method) oluşur.
Ruby' de Method Definition'a yani nasıl method tanımlanır;
def uzmanim "Merhaba Ruby" end uzmanim # "Merhaba Ruby"
def ve end anahtar kelimeleri arasına method’un adı geldi. Önce method’u tanımladık, sonra çağırmış olduk.
Ruby'de herşey mutlaka geriye birşey döndürür. Bu durumu açıklamak gerekirse genel olarak method’lar zincir olarak çalıştığı için, method denen şey de aslında bir fonksiyon ve fonksiyon denen şey de bir dizi işlemin yapılıp geriye sonucun döndürdüğü bir yapıdır.
Pek çok programlama dilinde fonksiyondan birşey geri dönmek için return kullanılır. Ruby'de de kullanılır ama zorunlu değildir. Yukarıdaki def uzmanim örneğinde return kullanmamamıza rağmen geriye Merhaba döndü.
Ruby'de methodlar içerisindeki çalıştırılan en son satırın değerini döndürür. Ancak siz daha öncesinde özellikle return anahtar kelimesi ile bir sonuç dönmezseniz. Bir örnekle konuyu açıklamak gerekirse;
def ilkornek m = "Merhaba" u = "Uzmanım" end def ikinciornek m = "Merhaba" u = "Uzmanım" return "Return Uzmanım" end puts ilkornek # Sonuç : Uzmanım puts ikinciornek # Sonuç : Return Uzmanım
İşte bu Ruby'nin özelliğidir. Kodu okurken bunu bilmezsek kafamız çok karışabilir.
Ruby' de def ile tanımlanan method’u, undef ile yok edebilirsiniz.
def ornek "Merhaba" end ornek # "Merhaba" undef ornek ornek # undefined local variable or method 'ornek' for main:Object (NameError)
Görüldüğü gibi undefined local variable or method .. Object (NameError) hatasını verdi.
Ruby' de Methodlar argüman yani parametre alabilir. Fonksiyona, doğal olarak parametre geçebilirsiniz.
def ornek(ad) "Merhaba #{ad}" end ornek("ergin") # "Merhaba ergin"
aynı örneği aşağıdaki gibi de yazabiliriz:
def ornek adiniz "Merhaba #{adiniz}" end ornek "ergin" # "Merhaba ergin"
Method’u tanımlarken ve çağırırken parantez kullanmadık! Bu alışmanız gereken önemli konulardan birisidir.
Bazı durumlara, argüman alan method çağırırken, argümanın tipine göre, eğer parantez kullanmadan çağırma yaparsanız warning alabilirsiniz.
Ruby'de Method Argümanlarına varsayılan (Default Arguments) değerler atayabilirsiniz. Bu, eğer methoda gönderilmesi beklenen argüman gelmemişse otomatik olarak değer atama yapmayı sağlamaktadır.
def ornek(adim="ergin") "Merhaba #{adim}" end ornek # "Merhaba ergin" ornek ("uzmanım") # "Merhaba uzmanım"
Parametre geçmeden çağırdığımızda, tanımladığımız varsayılan (default) değer atandı.
Değişen Sayıda Argümanlar (Variable-Length Arguments) Bazı durumlarda method’a değişken sayıda olarak parametre geçmek gerekebilir. Bu durumda argümanın başına * işareti gelir. Bu sayede o argüman artık bir dizi (Array) haline gelir.
def ornek(*isimler) "Merhaba #{isimler.join(" , ")}" end ornek("ergin") # "Merhaba ergin" ornek("ergin", "mert", "akın") # "Merhaba ergin , mert , akın" ornek "ruby", "java", "c#", "visual basic" # => "Merhaba ruby , java , c# , visual basic"
Diğer bir kullanımı ise;
def numara(bir, iki, *diger) p "ilk sayınız: #{bir}" p "ikinci sayınız : #{iki}" p "diğer sayılarınız : #{diger.join(",")}" end numara 5,10,50,75 # çıktılar # ilk sayınız: 5 # ikinci sayınız : 10 # diğer sayılarınız : 50,75
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol