Quando si esegue il debug, è molto utile per fare questo:Come posso stampare un nome di variabile e il suo valore senza digitare il nome due volte?
var = calc()
print("var:", var)
C'è qualche lingua in cui questo è facile da fare? In C e C++ è possibile utilizzare la stringa i macro operatore # e in Ruby ho trovato questa domanda:
Ruby - print the variable name and then its value
La soluzione che utilizza un simbolo: var e un blocco è quello che voglio.
In D, ho usato questo:
void trace(alias msg)() {
writeln(msg.stringof ~ ":" ~ to!string(msg));
}
ma non sono sicuro che sia il modo migliore, perché funziona solo in casi semplici. Ho provato diversi modi, ma a volte è possibile ottenere la stringa, ma non il valore (perché le variabili non sono comprese), oppure è necessario prima mescolare il modello e quindi chiamare la funzione.
E le altre lingue? Pitone? F #? Boo? Script di shell (qualsiasi shell)? Perl? (Preferisco stare lontano da Perl, tho). Tcl? Lisp, Scheme? Giava? (è altamente improbabile che Java possa farlo).
Anche nelle lingue in cui ho trovato qualche tipo di soluzione, funziona solo per casi semplici. Cosa succede se voglio stampare un'espressione arbitraria?
Se stavo progettando una lingua, questa funzione sarebbe un must. :-)
Grande! Questo è esattamente ciò di cui avevo bisogno! Grazie! La citazione necessaria è sottile, non è vero? Peccato che D non permetta di interpolare varName per renderlo più pulito. Non mi interessa inserire l'espressione all'interno di una stringa (posso usare q {} per avere un token normale nel mio editor). Per quanto riguarda la verbosità, potrei usare un nome di funzione molto breve :-) – marcus