Ich denke, der Grund, warum ein solches Dienstprogramm nicht verfügbar gemacht wird, besteht darin, dass die Werte der Standardargumente ausgewertet werden, wenn sie zugewiesen werden müssen. Daher könnte der Versuch, sie zu bewerten, zusätzliche Nebenwirkungen haben.
Lassen Sie mich Ihnen eine Geschichte erzählen über die Atompläne der russischen Regierung:
Jeden Tag für den letzten paar Jahren der vertrauenswürdige Spezialist Ivan reist zu einem Giga geheimen Ort, wo er vor sitzt, was ein regulärer irb sein sieht und wertet die Chancen des russischen Die Föderation überlebt eine angebliche gegenseitige sichere Zerstörung.
$: launch_all_nukes simulation_number: 1
...
Nur ein weiterer normaler Tag. manchmal
$: launch_all_nukes simulation_number: 2
...
$: launch_all_nukes simulation_number: 3
...
Auch wenn diese 25 Minuten im Durchschnitt nehmen, fühlt es sich wie Stunden.
$: launch_all_nukes simulation_number: 4
...
starrte auf den Bildschirm. Nur ein normaler Tag. Ein weiterer ... regelmäßiger ... Tag ...
$: launch_all_nukes simulation_number: 5
...
Tik-tok, Tick-Tack, Tick-Tack ... fragt sich, was könnte es zum Mittagessen?
$: launch_all_nukes simulation_number: 6
...
Endlich! 7 ist immer am interessantesten. Es ist die einzige, die manchmal zeigt, dass es eine Wahrscheinlichkeit von 0,03% - 0,08% für eine nicht vollständige Vernichtung gibt. Ivan hat keine Ahnung, was hinter der Nummer 7 steht. Oder irgendeine der anderen Simulationen für diese Angelegenheit. Er führt nur Befehle aus und wartet. Aber sicherlich ist Nummer 7 die eine, die kleine Strahlen der Freude und Aufregung in seiner ansonsten langweiligen Aufgabe bringt. Aaaaaaand, geh!
$: launch_all_nukes simulation_number: 7
...
0%. Wie alle anderen auch. Wie regelmäßig.
$: launch_all_nukes simulation_number: 8
...
Spielt es eine Rolle, eigentlich? Warum sollte eine Nation allen anderen überlegen sein? Ist das menschliche Leben von Anfang an wertvoll? Ist die Erde insgesamt von Natur aus wertvoll? Nur ein winziges Schauspiel des Felsens in einem endlosen Universum floating ...
$: launch_all_nukes simulation_number: 9
...
Was ist passiert? Ivan war ein großartiger Entwickler. Und jetzt starrt er nur an einer Konsole, läuft sich wiederholende Befehle von Zeit zu Zeit ... Ist es das, was Fortschritt fühlt sich an wie ...
$: launch_all_nukes simulation_number: 10
...
Warte einen Moment ... Was das ist Standardwert von simulation_number:
? Was ist es? Sicherlich hat die Implementierung einige Überprüfung wie __actually_launch_nukes__ if simulation_number.nil?
. Aber ist es wirklich nil
? Oder ist es etwas anderes? ...
$: launch_all_nukes simulation_number: 11
...
Wie eine sich wiederholende Ohrwurm, diese kleine Frage verließ nie in den Sinn ... was ist es? ... Er befürchtete nie, die Welt versehentlich zu gefährden, weil er sah, dass das Ausführen von launch_all_nukes
ohne Argumente zu drei verschiedenen Zugriffsschlüsseln auffordert, von denen er keine kennt.
$: launch_all_nukes simulation_number: 12
...
Ivan hat lief, bevor in der Konsole gewöhnlichen Ruby-Befehle. Auf jeden Fall ist es nur ein gewöhnlicher Irb ... Ich mache nur eine einfache Selbstbeobachtungsmethode ... Er weiß, dass er es nicht tun darf ... Aber niemand wird es wissen, oder? Niemand weiß sogar, wie dieses Programm funktioniert sowieso ... Ah ...
$: launch_all_nukes simulation_number: 13
...
13 und 14 sind die schlimmsten! 13 dauert normalerweise anderthalb Stunden. 14 ist noch länger. Verdammt, Ivan sehnt sich nach einer winzigen, winzigen Information, die ihn mindestens ein paar Minuten lang beschäftigt hält ... Laß es!
$: method(:launch_all_nukes).default_value_for(:simulation_number)
...
Mortified, erstarrte Ivan regungslos wie die plötzliche Erkenntnis ihn getroffen. Er weiß jetzt, wie der Standardwert ist. Aber es ist zu spät ...
Wenn jemand mit einer rein introspektiven Lösung kommt, damit gehen.
Aus Neugier, was ist der Anwendungsfall dafür, warum Sie das brauchen? – jeffdill2
Konversation in dieser Frage hat mehrere Optionen, die Sie ausprobieren können: http://stackoverflow.com/questions/622324/getting-argument-names-in-ruby-reflection –
Hier ist eine andere: http://stackoverflow.com/questions/2452077/is-there-a-way-to-return-a-method-parameter-names-in-ruby –