Nehmen wir an, ich habe einen proc / lambda / block / method / etc so:
%Vor%Ich weiß, ich kann die Namen der Parameter herausfinden mit:
%Vor%Aber wie kann ich den Wert erhalten, den ein gegebener optionaler Parameter annehmen würde, wenn er nicht ist?
PS: Ja. Ich weiß, dass dies vor hier gefragt / beantwortet wurde , aber die vorherige Lösung erfordert die Verwendung des Gems merb
, was eigentlich etwas irreführend ist. merb
selbst hängt vom Juwel% methopara
ab (es sei denn, du bist auf JRuby oder MRI, was ich nicht bin), die selbst das Feature zum Zeitpunkt der Beantwortung der Frage zur Verfügung gestellt hat.
Traurigerweise scheint methopara
derzeit Abandonware zu sein. Außerdem hat es nur Ruby 1.9 (und nicht einmal die neueste Version) unterstützt, daher suche ich nach einer Lösung, die für aktuelle Ruby-Versionen funktioniert.
Angenommen, der proc / lambda wurde in einer Datei definiert, können Sie mit der Methode source_location
nach dem Speicherort der Datei und der Zeilennummer suchen, für die sie definiert wurde.
Mit Hilfe von File.readlines
können wir eine kurze Methode erstellen, bei der ein proc / lambda die Quellzeile ausgeben kann, auf der sie definiert wurde.
In Aktion sieht es ungefähr so aus
%Vor%Wenn Sie das gleiche für Methoden tun wollen, wird es ein bisschen mehr beteiligt. In diesem Fall empfehle die Lektüre ich diese Blog-Post von dem Pragmatischen Studio Blog: "View Source" On Ruby-Methoden
Tags und Links ruby reflection function optional-parameters default-value