On 6/1/23 10:58 PM, John Xu wrote:
Ok, thanks for all you gentlemen's help. I tried following function,
now it works like C/C++/Python way:
string getTMember(T t, string columnName) {
foreach(member; __traits(allMembers, T)){
if (member == columnName) {
return __traits(getMember, mcu, member).to!string;
}
}
return "";
}
You can use a switch, and the search for the right member name should be
more optimized, though it's possible the compiler might recognize your
pattern and do this anyway:
```d
string getTMember(T t, string columnName) {
switch(columnName)
{
static foreach(member; __traits(allMembers, T)) {
case member:
return __traits(getMember, t, member).to!string;
}
default:
return "";
}
}
```
This is a very common pattern in e.g. serialization libs in D.
-Steve