Wenn Sie debuggen, ist es sehr nützlich, dies zu tun:Wie kann ich einen Variablennamen und seinen Wert drucken, ohne den Namen zweimal einzugeben?
var = calc()
print("var:", var)
Gibt es eine Sprache, wo diese einfach zu tun? In C und C++ können Sie die stringify Makro Operator # und in Ruby verwenden fand ich diese Frage:
Ruby - print the variable name and then its value
Die Lösung, die ein Symbol verwendet: var und ein Block ist, was ich will.
In D, habe ich dies:
void trace(alias msg)() {
writeln(msg.stringof ~ ":" ~ to!string(msg));
}
Aber ich bin nicht sicher, dass es der beste Weg, weil es nur in einfachen Fällen funktioniert. Ich habe mehrere Möglichkeiten ausprobiert, aber manchmal können Sie die Zeichenfolge abrufen, aber nicht den Wert (weil Variablen außerhalb des Gültigkeitsbereichs sind), oder Sie müssen zuerst die Vorlage mischen und dann die Funktion aufrufen.
Und was ist mit anderen Sprachen? Python? F #? Boo? Shell-Skript (welche Shell)? Perl? (Ich bleibe lieber von Perl fern, tho). Tcl? Lisp, Schema? Java? (Es ist sehr unwahrscheinlich, dass Java das kann).
Sogar in den Sprachen, in denen ich eine Lösung gefunden habe, funktioniert es nur in einfachen Fällen. Was, wenn ich einen beliebigen Ausdruck drucken möchte?
Wenn ich eine Sprache entwerfe, wäre diese Funktion ein Muss. :-)
Großartig! Genau das habe ich gebraucht! Vielen Dank! Das benötigte Zitat ist subtil, oder? Schade, D erlaubt es nicht, varName zu interpolieren, damit es sauberer aussieht. Es macht mir nichts aus, den Ausdruck in eine Zeichenfolge zu setzen (ich kann q {} verwenden, um normale Token-HILIting in meinem Editor zu haben). Was Ausführlichkeit betrifft, könnte ich einen sehr kurzen Funktionsnamen verwenden :-) – marcus