Myślę, że powodem, dla którego takie narzędzie nie jest dostępne, jest to, że wartości domyślnych argumentów są szacowane, gdy muszą zostać przypisane. Dlatego próby ich oceny mogą mieć dodatkowe efekty uboczne.
Każdego dnia w ciągu ostatnich kilku lat, zaufany specjalista Ivan podróżuje do giga tajnym miejscu, gdzie znajduje się z przodu, co wydaje się być zwykłym IRB i ocenia szanse na rosyjskim Federacja przetrwała rzekomą obopólną gwarancję zniszczenia.
$: launch_all_nukes simulation_number: 1
...
Kolejny regularny dzień.
$: launch_all_nukes simulation_number: 2
...
$: launch_all_nukes simulation_number: 3
...
Nawet te 25 minut na średniej, czuje się jak godziny czasami.
$: launch_all_nukes simulation_number: 4
...
wpatrując się w ekran. Kolejny zwykły dzień. Innym ... regularne ... dzień ...
$: launch_all_nukes simulation_number: 5
...
Tik-tok, tik-tok, tik-tok ... Zastanawiasz się, co może być tam na obiad?
$: launch_all_nukes simulation_number: 6
...
Wreszcie! 7 jest zawsze najciekawszy. Jest to jedyna, która czasami pokazuje, że istnieje 0,03% - 0,08% szans na nie całkowitą anihilację. Ivan nie ma pojęcia, co stoi za liczbą 7. Lub jakąkolwiek inną symulację. Po prostu uruchamia polecenia i czeka. Ale z pewnością numer 7 to ten, który niesie wiele radości i podekscytowania w swoim niecodziennym zadaniu. Aaaaaand, gotowe!
$: launch_all_nukes simulation_number: 7
...
0%. Jak wszystkie inne. Jak regularne.
$: launch_all_nukes simulation_number: 8
...
Czy to ważne, rzeczywiście? Dlaczego jeden naród byłby lepszy od wszystkich innych? Czy na początku ludzkie życie jest cenne? Czy Ziemia jako całość jest z natury wartościowa? Wystarczy mały spektakl skale pływającego w nieskończonym Wszechświecie ...
$: launch_all_nukes simulation_number: 9
...
Co się stało? Ivan był świetnym deweloperem. A teraz po prostu patrzy na konsoli, prowadzenie powtarzalnych poleceń od czasu do czasu ... Czy to, co czuje się jak postęp ...
$: launch_all_nukes simulation_number: 10
...
Chwileczkę ... Co to jest domyślna wartość simulation_number:
? Co to jest? Z pewnością implementacja ma pewną kontrolę, taką jak __actually_launch_nukes__ if simulation_number.nil?
. Ale czy to naprawdę nil
? A może to coś innego? ...
$: launch_all_nukes simulation_number: 11
...
Jak powtarzalnych słonecznicy, nigdy ten drobny pytanie opuścił swój umysł ... co to jest? ... Nie bał się przypadkowo narażać świata, ponieważ zobaczył, że uruchomienie launch_all_nukes
bez argumentów powoduje wyświetlenie trzech różnych kluczy dostępu, z których żaden nie wie.
$: launch_all_nukes simulation_number: 12
...
Ivan prowadził zwyczajne Ruby poleceń w konsoli wcześniej. Z całą pewnością jest to zwykła irb ... Po prostu uruchamia jedną prostą metodę introspekcji ... Wie, że nie wolno mu tego robić ... Ale nikt nie będzie wiedział, prawda? Nikt nawet nie wie, jak ten program działa tak ... Ach ...
$: launch_all_nukes simulation_number: 13
...
13 i 14 są najgorsze! 13 zwykle zajmuje półtorej godziny. 14 jest jeszcze dłuższy. Niech to szlag, Iwan pragnie, tylko drobiazgowe, drobne informacje, które utrzymują jego umysł przez co najmniej kilka minut ... Zróbmy to!
$: method(:launch_all_nukes).default_value_for(:simulation_number)
...
upokorzony, Ivan zastygł w bezruchu, gdy nagle uderzył go realizacja. Teraz wie, jaka jest wartość domyślna. Ale jest już za późno ...
Jeśli ktoś wyjdzie z czysto introspekcyjnej rozwiązania, iść z tym.
Z ciekawości, jaki jest pożytek z tego, dlaczego tego potrzebujesz? – jeffdill2
Rozmowa w tym pytaniu ma kilka opcji, które możesz wypróbować: http://stackoverflow.com/questions/622324/getting-argument-names-in-ruby-reflection –
Oto kolejna: http://stackoverflow.com/questions/2452077/is-there-a-way-to-return-a-method-parameter-names-in-ruby –