忍受我这...
假设我有一个现有的结构:
<cfset struct1 = {key1 = "foo", key2 = "bar"}>
...我想添加一些键/值对。典型的方法是这样的:
<cfset struct1.key3 = "baz">
<cfset struct1.key4 = "qux">
<cfset struct1.key5 = "quux">
或者,我可以使用 structAppend():
<cfset struct2 = {key3 = "baz", key4 = "qux", key5 = "quux"}>
<cfset structAppend(struct1, struct2, false)>
...它还有一个额外的好处是允许我控制是否覆盖预先存在的键。我认为,缺点是它使用更多内存,因为新的键/值对最终将存在于两个不同的地方。但是如果我这样做呢:
<cfset structAppend(struct1, {key3 = "baz", key4 = "qux", key5 = "quux"})>
我是否消除了额外的内存使用?或者,在函数执行后,第二个参数的结构是否会继续存在于某个秘密位置——在这种情况下,我现在将内存浪费在一组我什至无法访问的冗余键/值上。
虽然我主要关心的是内存使用,但与第一种方法相比,知道最后一种方法是否有任何其他缺点(例如处理开销)可能不会有什么坏处。而且我意识到,我介绍的任何方法之间的资源使用差异在单个执行场景中都不会显着。我正在考虑更大的范围,有很多数据和/或很多重复。
如果这很重要,我目前正在使用 CF 9.0.1。