2017-05-02 6 views
2

hashobjectに変換するにはどうすればよいですか?私は次のような定義があるとします。Qore:オブジェクトにハッシュを変換する方法

class A { 
    int i; 
    string s; 
} 
class B { 
    int bi; 
    A a; 
} 

hash h = (
    "bi" : 100, 
    "A" : ("i" : 10, "s" : "str")); 

私はクラスBのオブジェクトにhを変換する可能性がどのようにどのような方法がありますか?

答えて

2

これは一般的ですか?もしそうなら、もう少し冗長な構造が必要です。そのようなことは、 'A'はオブジェクトであること、 'i'は整数などであることを明確にします。

とにかく、オブジェクトを長く作成するために使用できる組み込み関数create_objectがありますオブジェクトはコンストラクタの引数を必要としないか、オブジェクトが何をすべきかを知っているからです。それからあなたはすべてのメンバーを設定し、それは彼らが一般公開される必要があることを意味します。オブジェクトのパブリックメンバを繰り返し処理し、ハッシュがすべての情報を提供しているかどうかを確認することもできます。

メンバー型やメソッドシグネチャなど、オブジェクトの詳細を知る方法がわかりません。しかし、オブジェクトを知っている(つまり、コンストラクタにargを渡したり、作成など)、またはコンストラクタargsとパブリックメンバーを持たない単純なオブジェクトでなければなりません(プライベートメンバーは直接設定できません)。

+0

リンク:[create_object()](https://docs.qore.org/current/lang/html/group__object__functions.html#ga6a929dc065cfb0b20639ac815be9cad3)、[create_object_args()](https://docs.qore.org/)現在/ lang/html/group__object__functions.html#ga4a7d04160dbbaf788cd8a0e18f28019c);また、この質問に関連してオープンな問題があります。[オブジェクトのシリアル化とデシリアライズの方法を実装する](https://github.com/qorelanguage/qore/issues/1589) –

関連する問題