1 | 2 | 3 | 4

Yirmi Dakikada Ruby

Eğer parmaklarımızı çok yormadan defalarca “Hello” demek istersek ? Bir metot tanımlamamız gerekiyor!

irb(main):010:0> def hi
irb(main):011:1> puts "Hello World!"
irb(main):012:1> end
=> :hi

def hi kodu ile metot tanımlaması başlar. Bu Ruby’ye adı hi olan bir metot tanıtımı (definition) başlattığımızı bildirir. Sonraki satır metodun gövdesini oluşturur. Daha önce gördüğümüz gibi: puts "Hello World". Son satırdaki end Ruby’ye metot tanımlamasını bitirdiğimizi belirtir. Bu yanıt Ruby 2.0 ve önceki sürümlerde => nil olabilir. Fakat bu, şu anda önemli değil, devam edelim.

Kısaca Bir Metot Defalarca Yaşar

Şimdi bu metodu birkaç defa çalıştıralım:

irb(main):013:0> hi
Hello World!
=> nil
irb(main):014:0> hi()
Hello World!
=> nil

Pekala, bu kolaydı. Ruby’de metotları çağırmak için adlarını Ruby’ye söylemek yeterli. Eğer metot bir parametre almıyorsa tüm yapmanız gereken bundan ibaret. Eğer isterseniz boş parantezlerle parametresiz bir metot çağırdığınızı belirtebilirsiniz, ama gereği yok.

Eğer dünyaya değil de bir kişiye merhaba demek istersek ne olacak? Hemen hi metodunu bu sefer parametre alacak şekilde tekrar tanımlayalım.

irb(main):015:0> def hi(name)
irb(main):016:1> puts "Hello #{name}!"
irb(main):017:1> end
=> :hi
irb(main):018:0> hi("Matz")
Hello Matz!
=> nil

Çalıştığını gördükten sonra neler olduğunu tekrar bir inceleyelim.

String İçine Erişmek

#{name} kısmı nedir? Bu bir string içine birşeyler eklemenin Ruby yoludur. Süslü parantez içindeki kısım stringe çevrilir ve ana string içine bu noktada eklenir. Bunu verilen ismin ilk harfinin büyük olduğundan emin olmak için kullanabilirsiniz:

irb(main):019:0> def hi(name = "World")
irb(main):020:1> puts "Hello #{name.capitalize}!"
irb(main):021:1> end
=> :hi
irb(main):022:0> hi "chris"
Hello Chris!
=> nil
irb(main):023:0> hi
Hello World!
=> nil

Burda birkaç diğer şekil görünüyor. Biri metodu parantez kullanmadan çağırıyoruz. Eğer ne yaptığınız belli ise parantezler keyfe bağlı kullanılır. Diğer şekil varsayılan parametre değeri World. Bunun anlamı eğer parametre verilmediyse name değeri varsayılan olarak "World" alınacaktır.

Bir Selamlayıcıya Dönüştürmek

Eğer bir selamlayıcı yapmak istersek, adınızı hatırlayacak ve sizi karşılayacak, sonra uğurlayacak. Bunu yapmak için bir nesne kullanmak isteyebilirsiniz. Bir “Greeter” sınıfı oluşturalım.

irb(main):024:0> class Greeter
irb(main):025:1>   def initialize(name = "World")
irb(main):026:2>     @name = name
irb(main):027:2>   end
irb(main):028:1>   def say_hi
irb(main):029:2>     puts "Hi #{@name}!"
irb(main):030:2>   end
irb(main):031:1>   def say_bye
irb(main):032:2>     puts "Bye #{@name}, come back soon."
irb(main):033:2>   end
irb(main):034:1> end
=> :say_bye

Buradaki yeni kelime class. Bu Greeter adı verilen bir sınıf ve içinde birkaç metot tanımlar. Ayrıca dikkat ederseniz @name bu sınıfın bir örnek değişkeni ve sınıfın tüm metodlarının erişimine açık. Göreceğiniz gibi say_hi ve say_bye metotları içinde kullanılıyor.

Peki bu Greeter sınıfını nasıl çalıştıracağız? Bir nesne üretin.