在 Pike 中列出 class 的所有成员

List all members of a class in Pike

在 Pike 中,可以通过调用 indices() 来检索对象的所有成员。是否也可以在不实例化的情况下查看 class 的所有成员?

> class A {int foo; string bar;};
> A a = A();
> indices(a);
(1) Result: ({ /* 2 elements */
                "foo",
                "bar"
            })
> indices(A);
(2) Result: ({ })

是的,你可以,虽然输出不会像 indices 那样友好。你需要使用 _describe_program 函数,像这样:

> _describe_program(A);
(4) Result: ({ /* 2 elements */
            ({ /* 7 elements */
                0,
                "foo",
                int,
                0,
                0,
                0,
                0
            }),
            ({ /* 7 elements */
                0,
                "bar",
                string,
                0,
                16,
                0,
                0
            })
        })