Ist ein Teil meines Codes, den ich vereinfachen möchte, um die Übergabe eines zusätzlichen Arguments bei jedem Aufruf zu vermeiden. In der Tat ist mein Anwendungsfall, dass M
ist eine Benutzerbibliothek ohne die Definition von context
Argument bei jeder Methode. check
ist eine Methode, die nicht vom Benutzer definiert wird.
# User code
module M
def do_something(context)
puts "Called from #{context}"
context.check
end
module_function :do_something
end
# Application code
class Bar
def check
puts "Checking from #{self}..."
end
end
class Foo < Bar
def do_stuff(scope, method)
scope.send method, self
end
end
# Executed by user
Foo.new.do_stuff M, :do_something
Gibt es eine Möglichkeit, dasselbe zu tun, ohne die self
als Eingangsargument für do_something
Methode zum Abrufen von check
Verfahren ?
# User code
module M
def do_something
called_from_object = ???
puts "Called from #{called_from_object}"
called_from_object.check
end
module_function :do_something
end
# Application code
class Bar
def check
puts "Checking from #{self}..."
end
end
class Foo < Bar
def do_stuff(scope, method)
scope.send methood
end
end
# Executed by user
Foo.new.do_stuff M, :do_something
Vielen Dank für Ihre Unterstützung!