我想合并用同一个构造函数创建的两个记录。
记录A使用字段a,b,c的值进行初始化,而记录B仅使用foo的值进行初始化。
构造函数对所有字段都有默认值,因此两个记录都有a,b,c,foo作为字段。
现在我想合并记录B“在”A的顶部,比如新的记录将包含来自A的a,b,c和来自B的foo。
实际发生的情况是,B完全覆盖了A中的值(诚然,这听起来合乎逻辑)。
有没有一种已知的/简单的方法来合并记录,不包括默认值?我正在考虑编写一个函数来识别构造函数,从配置文件中找到默认值,并具有排除默认值的逻辑,但这听起来很容易出错(我如何区分默认值和合法但与默认值完全相似的值?)。
此外,我正在一个现有的代码库中工作,并希望做出尽可能小的更改。
发布于 2017-07-30 05:08:44
我觉得你想要mergeWith docs
挂起类型A和类型B中的一种/两种类型的方法以公开您的自定义合并逻辑甚至可能是有意义的。这将允许您更容易地识别缺省值(因为它们可能在作用域中),并提供方便的访问。
用法如下所示:
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 datahttps://stackoverflow.com/questions/44910459
复制相似问题