İçeriğe atla

Ruby/Metod tanımlamak

Vikikitap, özgür kütüphane

←Veri tipleri | Sınıflar ve nesneler→

Bir metodun tanımlaması def deyimi ile başlar ve end kelimesi ile biter. Bazı programcılar Ruby metod tanımlamalarını Python dilindekine benzetir.

def myMethod
end

Parametreleri olan bir metod tanımlarken de metod isminden sonra parametrelerin değişken isimleri parantez içinde yazılır. Metod çağrıldığında verilen argümanlar aynı bu parametre isminde yerel değişken olarak metod içindeki kodda kullanılır.

def myMethod(msg)
  puts msg
end

Eğer bir'den çok parametre varsa bunların isimleri aralarında virgül konarak yazılır.

def myMethod(mesaj, kişi)
  puts "Merhaba, benim adım " + kişi + ". Kısa bilgilerim şunlar: " + mesaj
end


Metodların çağrılması

[düzenle]

Metodun çağrılması, kodun başka bir yerinde adının ve parametre değerlerinin (argümanlarının) verilmesi yoluyla çalıştırılmasıdır — bizde "metod çağrılması", onlarda "invoking method" denir. Metodları çağırırken isimleri yanında parantez kullanmak ya da kullanmamak size kalmış, her ikisi de geçerlidir. Diğer dillerden gelen yazılımcılar genellikle bir metod olduğunu belirtmek için görsel olarak parantezli kullanmayı tercih eder.

# Parantezli şekilde
myMethod()

# Parantezsiz şekilde
myMethod


Eğer parametreleri olan bir metod çağıracaksanız, parametreleri parantez içinde virgülle ayrılmış yazarsınız (ya da parantez kullanmayabilirsiniz ve görünmeyen parantez içine yazarsınız).

def myMethod(a, b)
  puts a + b
end

myMethod(1, 2)
myMethod 1, 2
myMethod("abc", "xyz")


Ayrıca metoda argüman olarak (parametre değeri) bir değişken de verilebilir.

def myMethod(a)
  puts "Hello " + a
end

name = "World"
myMethod(name)


Default değerler

[düzenle]

Sıklıkla karşılaşılan bir şey de metod parametrelerinin bir ya da birkaçının default değeri (eğer başka bir değer verilmediyse, kabul edilen değeri) olmasıdır. Çok parametreli metodları çağırırken çoğunlukla aynı olan değerleri tekrar tekrar yazmak sıkıcı olacaktır. Bu yüzden böyle parametreler için default değer tanımlanabilir. Bunu yapmak çok kolay — metod tanımlamasında parametre adını verirken yanına da bir değer ataması eklersiniz. Default değeri olan ve olmayan parametreleri karışık şekilde kullanabilirsiniz.

def myMethod(mesaj="Bu bir default değer")
  puts mesaj
end

myMethod()
myMethod("Default değer nereye gitti?")


Değer dönüşleri

[düzenle]

Sıklıkla bir metodun işini bitirdikten sonra bir değer üretmesini ve bu değeri kullanmak istersiniz. Buna metoddan dönen değer denir. Bunu yapmak için return ifadesini kullanırsınız.

def myMethod
  # bir kısım kodlar ve arkasından
  return "Hello"
end

puts myMethod()

myMethod() metodu işini bitirdikten sonra end satırı öncesinde en son return satırında "Hello" string değerini geri dönüyor. puts metoduna bu metodumuzu parametre olarak verdiğimiz için , önce metodu çalıştırır ve metoddan dönen değeri ekrana yazar.

Bununla beraber , Ruby geliştiricileri tembel olduğu için , bir özellik eklemişler — son elde edilen değer (bazen hangi değer olduğunu tahmin etmek kabiliyet ister) metoddan dönen değer olur (eğer return yoksa). Bunu bilerek yukarıdaki örneği şöyle de yazabilirsiniz:

def myMethod
  "Hello"
end

puts myMethod

Burada önemli bir bilgi, return ifadesi metodun işlemesini bitirir. return deyimini bir değer vermeden dönmek sayesinde kodun ilerleyen yerlerinde belli koşullar sağlanınca metodu bitirmek bazen çok gereklidir.

def myMethod
    while true
        puts "While döngüsü koşulu 'true' olduğu için sonsuza kadar çalışacak (mı acaba?)"
        return
    end
end

myMethod


Ayrıca bakınız

[düzenle]

Bu sayfa Ruby metod tanımlamaları ve kullanmaları için bir ön bilgi niteliğinde, çünkü bu bir programlama dili için çok önemli bir konsept. Bununla beraber burada geçmeyen bazı diğer harika şeyler daha detaylı olarak bu sayfada işlenmiştir.