ruby-uebungen/Assignment_039/solution/readme.md

27 lines
894 B
Markdown

# Lösung: Methoden dynamisch aufrufen
<div style="border: 1px solid grey;"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div>```ruby
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)
```