サーチ…
構文
- __traits(TraitsKeyword、TraitsArguments ...)
構造体のメンバーを反復する
import std.stdio;
struct A {
int b;
void c();
string d;
};
void main() {
// The following foreach is unrolled in compile time
foreach(name; __traits(allMembers, A)) {
pragma(msg, name);
}
}
allMembers
特性は、指定された型のメンバの名前を含む文字列のタプルを返します。これらの文字列はコンパイル時に認識されます。
継承されたメンバーなしで構造体/クラスのメンバーを反復処理する
module main;
auto getMemberNames(T)() @safe pure {
string[] members;
foreach (derived; __traits(derivedMembers, T)) {
members ~= derived;
}
return members;
}
class Foo {
int a;
int b;
}
class Bar : Foo {
int c;
int d;
int e;
}
void main() {
import std.stdio;
foreach (member; getMemberNames!Bar) {
writeln(member);
}
}
derivedMembersは文字列リテラルのタプルを返します。各文字列はメンバ名です。
この出力例は次のとおりです。
c
d
e
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow