Penso che il motivo per cui tale utilità non è disponibile è che i valori degli argomenti predefiniti vengono valutati quando devono essere assegnati. Pertanto, provare a valutarli potrebbe avere effetti collaterali aggiuntivi.
ogni giorno per gli ultimi due anni, lo specialista di fiducia Ivan si reca in una località segreta giga dove si siede di fronte a quello che sembra essere un normale IRB e valuta le possibilità di russo La Federazione sopravvive a una supposta distruzione reciproca assicurata.
$: launch_all_nukes simulation_number: 1
...
Solo un altro giorno normale.
$: launch_all_nukes simulation_number: 2
...
$: launch_all_nukes simulation_number: 3
...
Anche se questi prendono 25 minuti in media, ci si sente come a volte ore.
$: launch_all_nukes simulation_number: 4
...
a fissare lo schermo. Solo un altro giorno normale. Un altro ... regolare ... giorno ...
$: launch_all_nukes simulation_number: 5
...
Tik-Tok, tik-tok, tik-tok ... chiedendo cosa potrebbe esserci per il pranzo?
$: launch_all_nukes simulation_number: 6
...
Finalmente! 7 è sempre il più interessante. È l'unico che a volte mostra che c'è una probabilità dello 0.03% - 0.08% di non annientamento completo. Ivan non ha idea di cosa si nasconda dietro il numero 7. O di nessuna delle altre simulazioni. Esegue solo i comandi e aspetta. Ma sicuramente, il numero 7 è quello che porta piccoli raggi di gioia ed eccitazione nel suo incarico altrimenti noioso. Aaaaaaand, vai!
$: launch_all_nukes simulation_number: 7
...
0%. Come tutti gli altri. Quanto regolare.
$: launch_all_nukes simulation_number: 8
...
importanza ha in realtà? Perché una nazione dovrebbe essere superiore a tutte le altre? La vita umana è preziosa da sola, per cominciare? La Terra nel suo insieme è intrinsecamente preziosa? Solo un piccolo spettacolo di roccia che galleggia in un universo infinito ...
$: launch_all_nukes simulation_number: 9
...
Che cosa è successo? Ivan era un grande sviluppatore. E ora ha appena fissa una console, l'esecuzione di comandi ripetitivi di volta in volta ... E 'questo ciò che il progresso si sente come ...
$: launch_all_nukes simulation_number: 10
...
Aspetta un secondo ... Qual è il valore predefinito di simulation_number:
? Che cos'è? Sicuramente, l'implementazione ha qualche controllo come __actually_launch_nukes__ if simulation_number.nil?
. Ma è davvero nil
? O è qualcos'altro? ...
$: launch_all_nukes simulation_number: 11
...
Come un earworm ripetitivo, questa piccola domanda mai lasciato la sua mente ... cosa si tratta? ... Non ha mai temuto di mettere in pericolo accidentalmente il mondo perché ha visto che eseguire launch_all_nukes
senza argomenti richiede tre diverse chiavi di accesso, nessuna delle quali sa.
$: launch_all_nukes simulation_number: 12
...
Ivan ha eseguito i comandi ordinaria Ruby nella console prima. Con tutti i mezzi, è solo un irb regolare ... Basta eseguire un semplice metodo di introspezione ... Sa che non gli è permesso di farlo ... Ma nessuno lo saprà, giusto? Nessuno sa ancora come questo programma funziona in ogni caso ... Ah ...
$: launch_all_nukes simulation_number: 13
...
13 e 14 sono i peggiori! 13 di solito dura un'ora e mezza. 14 è ancora più lungo. Dannazione, Ivan brama, solo un'infinita minuscola informazione per tenere impegnata la sua mente per almeno un paio di minuti ... Fallo!
$: method(:launch_all_nukes).default_value_for(:simulation_number)
...
Mortificato, Ivan ha congelato immobile come la realizzazione improvvisa lo colpì. Ora sa qual è il valore predefinito. Ma è troppo tardi...
Se qualcuno esce con una soluzione puramente introspettiva, andare con quella.
Per curiosità, qual è il caso d'uso del perché ne hai bisogno? – jeffdill2
La conversazione in questa domanda ha diverse opzioni che puoi provare: http://stackoverflow.com/questions/622324/getting-argument-names-in-ruby-reflection –
Eccone un'altra: http://stackoverflow.com/questions/2452077/is-there-a-way-to-return-a-method-parameter-names-in-ruby –