Reflection/List properties: Difference between revisions

Content added Content deleted
m (→‎{{header|Phix}}: added values)
Line 54: Line 54:
(<PrivateNumber>k__BackingField, 2)
(<PrivateNumber>k__BackingField, 2)
</pre>
</pre>

=={{header|D}}==
<lang d>import std.stdio;

struct S {
bool b;

void foo() {}
private void bar() {}
}

class C {
bool b;

void foo() {}
private void bar() {}
}

void printProperties(T)() if (is(T == class) || is(T == struct)) {
import std.stdio;
import std.traits;

writeln("Properties of ", T.stringof, ':');
foreach (m; __traits(allMembers, T)) {
static if (__traits(compiles, (typeof(__traits(getMember, T, m))))) {
alias typeof(__traits(getMember, T, m)) ti;
static if (!isFunction!ti) {
writeln(" ", m);
}
}
}
}

void main() {
printProperties!S;
printProperties!C;
}</lang>
{{out}}
<pre>Properties of S:
b
Properties of C:
b</pre>


=={{header|Elena}}==
=={{header|Elena}}==