2011-02-28 7 views
-1

私はyamlを使うつもりでした。なぜならそれはmergeという素晴らしい機能を持っているからです! ( "< <"キー)YAMLの代替スクリプトですか?

そして、私はcppで作業しているので、パーサーには 'yaml-cpp'を使用しています。

しかし! yaml-cppはマージをサポートしていません。代わりに何をすることができますか?

他のスクリプト、その他のパーサー、その他の方法で解析するなど、マージ機能を使用することができます。

ただし、複数のオブジェクトをマージする必要はありません。私は何かを定義し、最初のオブジェクトから継承した別のオブジェクトを作成し、いくつかの値をオーバーライドするだけです。そのこと。

読んでいただきありがとうございます。

+0

これは明らかに[前の質問](「http://stackoverflow.com/questions/5101542/script-that-support-merge-feature-like-yaml」)の「バンプ」です。以前は答えが得られなかったことを申し訳なく思っていますが、解決策はそれを編集することです。重複して人々の時間を浪費することはありません。 –

+0

私はこの質問を投稿する前にそれを削除しました。そしてあなたのリンクは今壊れています。私は以前の質問をどのように見つけたのか分かりません。削除されたとマークされた後に少し削除された可能性があります。これはまだ質問を投稿するのが悪い方法ですか?以前のものを編集して古いものを削除し、新しい質問を投稿することとの違いは何ですか?私の目的は、私の質問を最初のページに置くことでした。以前の質問の編集は同じ方法ですか? – SeniorLee

+0

リンクが壊れていない、あなたはそれを見る評判がない。私が言ったように、それは人々の時間を無駄にするので悪いです。あなたの以前の質問を読んだ人は、追加の情報を提供しない新しいユーザーを見ています。トップページには本当に新しい質問があります。 –

答えて

0

あなたは待つことができませんし、マージが必要な場合は、YAML-CPP問題について「barma」での提案に従うことができます:http://code.google.com/p/yaml-cpp/issues/detail?id=41#c12

変更が(FindValueForKeyテンプレートに以下の行を挿入することです) - のためのループとreturn 0間:

const Node *pValueMerge = FindValueForKey(std::string("<<")); 
if(pValueMerge) { 
    return pValueMerge->FindValueForKey(key); 
} 

問題は(私は、問題のページの上に述べたように)specができることです

<<: [*dict1, *dict2] 

複数の辞書をマージする。しかし、あなたはそれが必要ないと思われます。

+0

これを試しましたが、無限ループに陥るようです。たぶん私はこのコードを間違った場所に置いています。これを試してみましたか?本当に効果がありますか?私はもう一度試してみなければならないかもしれない – SeniorLee

+0

もう1つのこと、それが動作しても、ノードを反復することはサポートされていませんか?コードはちょうど私が推測するキーで見つけるときに機能します。 – SeniorLee

+0

@SeniorLee - まず、これは実際にあなたのために働くのですか? (あなたは答えを受け入れたので、そのコメントを投稿したので、私は確信できません。)第二に、それは明示的でなければ、マージされたノードを反復することはできません。 –

0

この機能を実装するには「yaml-cpp」と尋ねます。

+0

これについては公開済みの問題が既にあります(2009年以降に開かれています)。それが実現するまで待つ時間はありません。ありがとう。 – SeniorLee

関連する問題