수색…
통사론
- __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