如何将hash
转换为object
?假设我有以下定义:
class A {
int i;
string s;
}
class B {
int bi;
A a;
}
hash h = (
"bi" : 100,
"A" : ("i" : 10, "s" : "str"));
有什么方法可以将h
转换为类B
的对象吗?
答案 0 :(得分:2)
这是通用的吗?如果是这样,那么你需要更详细的结构。这样就可以清楚地表明' A'是一个对象,'我'是一个int等。
无论如何,只要对象不需要构造函数参数或者您知道它们应该是什么,就可以使用内置函数create_object
来创建对象。然后你会设置所有成员,这意味着他们需要公开。您还可以迭代对象的公共成员,从而检查您的哈希是否提供了所有信息。
我不知道如何更多地了解对象,例如成员类型,方法签名等。但是,您要么知道对象(因此您可以为构造函数提供args或调用方法)在创建之后等)或者它必须是一个没有构造函数args和公共成员的简单对象(因为私有成员不能直接设置)。