D言語 Part26
■ このスレッドは過去ログ倉庫に格納されています
0022デフォルトの名無しさん
2010/12/29(水) 16:41:28フィールドの名前なしでいいなら>>8の通り.tupleofを使う、名前ありなら下のコードで可能
class CTest{
int mNum;
string mText;
void Function(){}
}
void main(){
foreach(mem;__traits(allMembers, CTest)){
static if (is(typeof(mixin("&CTest." ~ mem))))
pragma(msg, "f ", mem);
else
pragma(msg, "@ ", mem, ", isType = ", mixin("is(CTest." ~ mem ~ ")"));
}
}
interface Object.Monitorが出てきたのでisType==falseではじく必要がある。
あと、__traitsで取ってきたタプルをforeachで回すと、ループ内のコードはコンパイル時に評価される。
ので、>>7のコードは考えとしては正しい。
■ このスレッドは過去ログ倉庫に格納されています