Pertanyaan Bagaimana Anda menyebutkan nama dan jenis di dalam struct atau kelas pada waktu kompilasi di D?


Bagaimana Anda menyebutkan nama dan jenis di dalam suatu struct atau kelas pada waktu kompilasi?

yaitu melakukan hal berikut:

struct Foo {
  int x;
  int y;
}

string serialise!(A)(A a) {
  ...magic...
}

auto f = Foo(1,2);
serialise(f); -> "x:1, y:2"

Terima kasih,

Chris.


5
2017-09-21 08:10


asal


Jawaban:


Seperti ini:

foreach (index, field; myStruct.tupleof)
{
    // field.stringof is "field", slice is to cut off "myStruct."
    pragma(msg, "Name: " ~ myStruct.tupleof[index].stringof[9..$]);
    pragma(msg, "Type: " ~ typeof(field).stringof);
}

Contoh praktis: https://github.com/CyberShadow/ae/blob/master/utils/json.d#L107


8
2017-09-21 08:41