Istnieje operator "nameof" w C# 6 (https://msdn.microsoft.com/library/dn986596.aspx). Czy D ma odpowiednik? Lub jakiś konstrukt do naśladowania go?C#-style nazwa operatora w D?
6
A
Odpowiedz
10
Wierzę, że stringof
działa w podobny sposób. Na przykład, analogowe D do pierwszego przykładu C# jest w tym linku:
void f(string s) {
if (s == null) throw new Exception(s.stringof ~ " is null!");
}
Istnieje również std.traits.fullyQualifiedName
. Robi to co jest napisane na puszce:
module mymodule;
import std.traits : fullyQualifiedName;
class MyClass { int myvar; }
pragma(msg, MyClass.myvar.stringof); // myvar
pragma(msg, fullyQualifiedName!(MyClass.myvar)); // mymodule.MyClass.myvar
Jako pierwszy link wskazuje fullyQualifiedName
może być bardziej odpowiednie do generowania kodu kompilacji, gdzie pomaga się być jak najbardziej konkretny, aby uniknąć starcia z lokalnymi symbolami .