Diğer nesnelerin length yöntemi için biraz farklılıkları olabilir, ya da hiç olmayabilir de. Mesajlara nasıl cevap verileceği kararı yazılımın çalıştırılması sırasında verilir ve hangi nesneye başvurduğuna bağlı olarak olay değişebilir.
ruby>   foo = "abc"
ruby>   foo = ["abcde", "fghij"]
length yönteminin, nesneye göre değişebilmesiyle neyi kastediyoruz? Yukarıdaki örnekte ilk önce foo'nun uzunluğunu soruyoruz, basit bir dizgeye başvuruyor ve sadece tek bir mantıklı cevabı olabilir. İkinci sefer foo bir diziye başvuruyor ve uzunluğunun 2, 5 ya da 10 olduğunu düşünebilirsiniz ama genelde en kabul edilebilir cevap tabii ki 2 olacaktır.
ruby>   foo.length + foo.length
ruby>   foo = 5
Ancak belirsizlik ihtiva etmedikleri sürece kullanılmayabilirler de.
Ruby, self adında bir nesnenin bir yöntemini çağırdığı zaman başvurulan özel bir değişkene sahiptir. Rahatlık için "self." genelde yöntem çağrılırken kullanılmayabilir:
yukarıdaki ifadeyle aşağıdaki aynıdır:
Bir işlev çağrısı sadece self'le yöntem çağrımının kısaltılmış şeklidir. Bu da Ruby'yi saf bir nesneye yönelik yazılım geliştirme dili yapan şeydir. Hala işlevsel yöntemler diğer dillerdeki işlevlere çok benzese de aslında işlev çağrılarının Ruby'de gerçek nesne yöntemlerinden başka birşey olmadığını görmeniz gerekir. İstersek hala gerçek nesne yöntemleri değilmiş gibi kabul ederek işlevlerden bahsedebiliriz.
Nesne Yönelimli Düşünme Başlangıç Sınıflar