2011-12-09 15 views
9

私はちょうど空の文字列を返すリストを持つ問題を理解しようとしているのに、ほとんど時間を費やしました。 ArrayAppendまたはStructInsertを使用するのと同じようにListAppendを使用していましたが、ListAppendの動作は異なっています。もしあれば、ListAppendが他のすべてのものとは違った働きをする理由は何でしょうか?なぜListAppendは破壊的ではなく、ArrayAppendとStructInsertは両方とも破壊的ですか?

<cfset ListAppend(list, item)> 

= ''

<cfset ArrayAppend(array, item)> 

配列[1] =項目

<cfset StructInsert(struct, 'key', item)> 

struct.key = ColdFusionでアイテム

+0

私はこの同じ経験と質問を昨日持っていました。 –

+0

[なぜarrayAppendがtrueを返し、listAppendがリストを返すのですか?](http://stackoverflow.com/questions/1138709/why-does-arrayappend-return-true-and-listappend-return-the-list) –

答えて

10

おそらくリストが大きいのでおそらくStringです。配列や構造体とは異なり、文字列はimmutableです。つまり、変更することはできません。新しい値を「追加」するには、まったく新しいStringを作成する必要があります。配列と構造体は変更可能です。だからあなたはそれらを "その場で"修正することができます。

+0

私はこの昨日質問しました。そのような明確な答えをありがとう。 –

5

リストは、ColdFusionにだけ文字列と文字列でリスト(およびJava)は不変です。彼らは変更することはできません。 ListAppend()は、既存の文字列を変更するのではなく、新しい文字列を返します。

<cfset newList = listAppend(oldList, "New Value") /> 
関連する問題