Lorsque vous déboguez, il est très utile de le faire:Comment imprimer un nom de variable et sa valeur sans taper deux fois le nom?
var = calc()
print("var:", var)
est-il une langue où cela est facile à faire? En C et C++, vous pouvez utiliser l'opérateur macro stringify # et Ruby j'ai trouvé cette question:
Ruby - print the variable name and then its value
La solution qui utilise un symbole: var et un bloc est ce que je veux.
En D, j'ai utilisé ceci:
void trace(alias msg)() {
writeln(msg.stringof ~ ":" ~ to!string(msg));
}
Mais je ne suis pas sûr que c'est la meilleure façon, car il ne fonctionne que dans des cas simples. J'ai essayé plusieurs façons, mais parfois vous pouvez obtenir la chaîne, mais pas la valeur (parce que les variables sont hors de portée), ou vous devez d'abord mélanger le modèle, puis appeler la fonction.
Et les autres langues? Python? F#? Huer? Script Shell (quel shell)? Perl? (Je préfère rester loin de Perl, tho). Tcl? Lisp, Scheme? Java? (Il est hautement improbable que Java puisse le faire).
Même dans les langues où j'ai trouvé une sorte de solution, cela ne fonctionne que pour les cas simples. Que faire si je veux imprimer une expression arbitraire?
Si je devais concevoir une langue, cette fonctionnalité serait un must-have. :-)
Génial! C'est exactement ce dont j'avais besoin! Merci! La citation nécessaire est subtile, n'est-ce pas? Dommage que D ne permette pas d'interpoler varName pour le rendre plus propre. Cela ne me dérange pas de mettre l'expression dans une chaîne (je peux utiliser q {} pour avoir un jeton normal dans mon éditeur). En ce qui concerne la verbosité, je pourrais utiliser un nom de fonction très court :-) – marcus