これについては我慢してください...
既存の構造体があるとします:
<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)>
...これには、既存のキーを上書きするかどうかを制御できるという追加のボーナスがあります。欠点は、新しいキーと値のペアが 2 つの異なる場所に存在することになるため、より多くのメモリを使用することだと思います。しかし、代わりにこれを行うとどうなりますか:
<cfset structAppend(struct1, {key3 = "baz", key4 = "qux", key5 = "quux"})>
余分なメモリ使用量を排除しましたか? または、2 番目のパラメーターの構造体は、関数が実行された後も秘密の場所に存在し続けますか? その場合、アクセスすることさえできない冗長なキー/値のセットでメモリを浪費しています。
私の主な関心事はメモリの使用量ですが、最後のアプローチに最初のアプローチと比較して、処理オーバーヘッドなどの他の欠点があるかどうかを知ることはおそらく害にはならないでしょう。そして、私が提示したどの方法でもリソース使用量の違いは、単一の実行シナリオでは重要ではないことを認識しています。私は、大量のデータおよび/または多くの繰り返しを使用して、より大きなスケールで考えています。
それが重要な場合、私は現在CF 9.0.1を使用しています。