2011-05-26 16 views
5

Bir değişkende örnek yöntemini nasıl alabilirim? Örneğin:Yakut bir değişkene bağlı bir örnek yöntemini nasıl alabilirim?

I "çubuk" örnek yöntemi işlemek mümkün isteyen
class Foo 
    def bar 
    puts "bar" 
    end 
end 

(örneğin, yaklaşık olarak geçmek için). Nasıl yapabilirim?

ben Foo#bar almak için yapabileceğiniz benzer bir şey var mı ben

foo_class = Kernel.const_get("Foo") 

ile sürekli sınıfını alabilirsiniz biliyor? yöntem kapsamında

class Foo 
    def initialize(value) 
    @value = value 
    end 

    def bar 
    @value 
    end 
end 

unbound_bar = Foo.instance_method(:bar) 
p unbound_bar.bind(Foo.new("hello")).call 
#=> "hello" 
+0

sınıf yöntemi 'self.bar'? – fl00r

+0

Çubuk yönteminin nasıl çalıştığını dinamik olarak değiştirmek mi istiyorsunuz yoksa sadece çubuk yöntemini çağırarak, 'çubuk' çıktısını almak ister misiniz? –

+0

@ fl00r: Bu işe yaramıyor. Sınıfın bir örneğim yok. @Scott Gottreu: Onu arayabilmek istiyorum. –

cevap

7

İster bir UnboundMethod ihtiyaç görünüyor. Onu arayabilirsin, hala self'a bağlı.

+1

+ 1' i yaratabilirsiniz, ancak son '' merhaba' '' 'bar '' olmalıdır? –

+0

Evet, düzeltildi .... – tokland

+0

Evet –

İlgili konular