Bei der Entwicklung & amp; Debugging, ich wünschte manchmal, ich könnte einen 1-Liner schreiben, der die Namen, Typen & Amp; Werte eines Bündels von Variablen. Das Problem ist, ich weiß nicht, wie man auf den Namen einer Variablen zugreift, wenn ich überhaupt kann.
Hier ist ein erster Versuch:
%Vor%Ich möchte, dass die Ausgabe dieses Programms ungefähr so aussieht:
%Vor% Ich weiß nicht, was ???
darüber sein sollte. Kann das gemacht werden?
Hier ist ein bisschen Debug-Code, den ich überall verwende (ich stecke ihn in eine separate Datei, damit er wo immer nötig benötigt wird). Es kann auf zwei Arten verwendet werden. Hat einen oder mehrere Werte übergeben, prüft sie einfach und schreibt das Ergebnis in $ stderr. Hat aber einen Block übergeben, der ein oder mehrere Dinge zurückgibt, schreibt sie mit ihren Namen .
%Vor% Hinweis: Die Funktion q
und mehr ist jetzt im cute_print Juwel verfügbar.
Nein, weil foo
/ bar
/ baz
keine Instanzvariablen in Ihrem Code sind. Sie sind lokale Variablen (Instanzvariablen beginnen mit einem @
). Es gibt jedoch eine Möglichkeit, dies mit Instanzvariablen und der Methode Object#instance_variables
zu tun:
Um den Namen einer bestimmten Instanzvariablen abzurufen, durchlaufen Sie alle Instanzvariablen, bis Sie eine mit einem Wert gefunden haben, der Ihrer Instanzvariablen entspricht.
Oder Sie könnten einfach einen Debugger verwenden. Dafür wurden sie schließlich erfunden.
Tags und Links ruby