2013-09-01 15 views
6

, böyle bir yöntemin tanımı bakın:bir yöntem tanımı parantez ile başlar, anlayamıyorum onun faydası Ruby

def [](param) 
    # do stuff 
end 

bu yöntem beyanı ne anlama geliyor? O nasıl çalışır? Ne zaman kullanmalı? Ve bu tür bir yöntemi bir örnek nesnesiyle nasıl çağırırız?

+2

'[]' denir parantez gibi onları çağırabilir. Programlamada tamamen farklı bir anlam olarak "kanca" terimi. Dikkatli olmalısın. – sawa

+0

Teşekkürler şimdi güncellenen;) – medBo

cevap

8

O [] yöntemin ismi. Zaten Array#[] veya Hash#[]'u biliyor olabilirsiniz. Sınıflarınızda bu yöntemi de tanımlayabilirsiniz. Ne yapacak - bu size bağlı.

class Foo 
    def [](param) 
    # body 
    end 
end 

f = Foo.new 
f[:some_value] 
+0

burada: bazı_value benim beyannamemdeki paramdır? – medBo

+0

Evet, –

+0

yöntem gövdesinde 'param' olarak kullanılabileceksiniz, şimdi – medBo

0

Bu Array#[] okudunuz mu? Size bu konuda bazı fikir verecektir ..

[1,2].[](1) # => 2 
     | | 
---------> <--------- 
method name argument 
2

Bu yöntem "[]" adlı demektir. Başka yöntemler gibi diyoruz:

a = ['foo', 'bar', 'baz'] 
a.[](1) # => 'bar' 

Ayrıca, bu isimde yöntemler için, ayrıca

a[1]  # => 'bar'