2015-06-20 42 views
-1

所以,我想做一個方法列表,並在for循環中使用後列出。類中的方法列表

 

    class Hello 
     def func 
      pass 
     end 
     def func1 
      pass 
     end 
     list = [func, func1] 
     def loop_func 
      for func_instance in list 
       func_instance 
      end 
     end 
end 

但是這段代碼不起作用。哪裏不對?

+0

對於類'A'和'a = A.new','A.instance_methods'或'a.methods'會給你一個類的實例方法的數組。使用'A.instance_methods(false)'或'a.methods(false)'來僅包含在該類上定義的實例方法(即,排除未被覆蓋的繼承實例方法)。 –

+0

好的。以及我如何從列表中運行函數? – di0x

+0

可以通過'send'以編程方式調用方法。查看http://ruby-doc.org/core-2.2.2/Object.html#method-i-send – rossettistone

回答

1
class Hello 
    def foo 
    p "Foo" 
    end 
    def bar 
    p "Bar" 
    end 
    def loop_methods 
    self.class.instance_methods(false) 
     .each{ |m| m == __method__ || self.send(m) } 
    end 
end 

Hello.new.loop_methods