2017-07-04 5 views
0

同じコンストラクタで作成された2つのレコードをマージしたい。不変のjsのデフォルト値を除く2つのコレクションをマージする

レコードAはフィールドa,b,cの値で初期化され、レコードBはfooの値で初期化されます。

コンストラクタにはすべてのフィールドのデフォルト値があるため、両方のレコードのフィールドにはa,b,c,fooがあります。

今、私はBが完全に値をオーバーライドすることで、実際に何が起こるB.

からAからa,b,cfooが含まれています、などの新しいレコードとしてA、「の上に」レコードBをマージしたいですA(確かに、これは論理的に聞こえる)。

既定値を除いてレコードをマージする方法は簡単ですか?私は、コンストラクタを認識し、設定ファイルからデフォルト値を見つけて、デフォルト値を除外するロジックを持っているが、エラーが発生する可能性がある(デフォルト値と正当なものですが、デフォルトとまったく同じですか?)。

また、私は既存のコードベースで作業しており、可能な限り小さな変更を加えたいと考えています。

+0

使い方は次のようになります。 –

答えて

1

私はあなたがそれもカスタムマージ・ロジックを公開する/タイプAとタイプBのいずれかの両方のオフ方法をハングアップするのは意味がありますmergeWithdocs

をしたいと思います。これにより、デフォルト値をより簡単に特定できるようになり(おそらくそれらは有効範囲内にあるため)、便利なアクセスを提供します。あなたが現在持っているもののコード例を提供するために役立つかもしれない

a instanceof A; //=> true 
b instanceof B; //=> true 
a.mergeB(b); //=> a w/ some or all of b's data 
b.mergeA(a); //=> b w/ some or all of a's data 
関連する問題