ruby-uebungen/Assignment_035/solution/readme.md

28 lines
532 B
Markdown
Raw Permalink Normal View History

2023-05-25 17:47:19 +02:00
# Lösung: Methoden dynamisch aufrufen
2023-05-23 09:19:31 +02:00
2023-05-25 17:49:42 +02:00
```ruby
2023-05-25 17:47:19 +02:00
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)
2023-05-23 09:19:31 +02:00
2023-05-25 17:47:19 +02:00
begin
# Methode aufrufen, wenn sie keinen Parameter hat
method.call {} if method.arity == 0
rescue
end
end
end
2023-05-23 09:19:31 +02:00
2023-05-25 17:47:19 +02:00
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
2023-05-23 09:19:31 +02:00
end
2023-05-25 17:47:19 +02:00
crazy_caller(Test.new)
2023-05-23 09:19:31 +02:00
```