ruby-uebungen/Assignment_035/solution/readme.md

532 B

Lösung: Methoden dynamisch aufrufen

def crazy_caller(obj)
  # Methoden suchen
  obj.methods.each do |m|
    # m enthält ein Symbol mit dem Namen der Methode,
    # wir wollen aber das Methoden-Objekt
    method = obj.method(m)

    begin
      # Methode aufrufen, wenn sie keinen Parameter hat
      method.call {}  if method.arity == 0
    rescue
    end
  end
end

class Test
  def m1; puts 'm1'; end
  def m2; puts 'm2'; end
  def m3(a); puts 'm3'; end
  def m4(a, b); puts 'm4'; end
end

crazy_caller(Test.new)