리플렉션 인터페이스로이를 수행 할 수 있습니다. 문서에서 "rf_manager"를 찾으십시오.
이
struct foo {
bar : int;
};
struct baz {
};
extend sys {
run() is also {
var f : foo = new;
var rf_f : rf_struct = rf_manager.get_exact_subtype_of_instance(f);
var f_bar_field : rf_field = rf_f.get_field("bar");
if f_bar_field != NULL {
message(NONE,"struct 'foo' has a field called 'bar'");
} else {
message(NONE,"struct 'foo' doesn't have a field called 'bar'");
};
var b : baz = new;
var rf_b : rf_struct = rf_manager.get_exact_subtype_of_instance(b);
var b_bar_field : rf_field = rf_b.get_field("bar");
if b_bar_field != NULL {
message(NONE,"struct 'baz' has a field called 'bar'");
} else {
message(NONE,"struct 'baz' doesn't have a field called 'bar'");
};
};
};
이
[...]
Starting the test ...
Running the test ...
[0] [email protected]: struct 'foo' has a field called 'bar'
[0] [email protected]: struct 'baz' doesn't have a field called 'bar'
을 산출이 필드를 반복해야하는 경우 : 모든 것이 설명되어 아니, 그러나 ...
여기
, 나는 필드 baz
의 존재 여부를 테스트하고 있습니다 해야 할 일 :
rf_manager.get_exact_subtype_of_instance(whatever).get_declared_fields()