Coldfusion 为什么ListAppend是非破坏性的,而ArrayAppend和StructInsert都是破坏性的?

Coldfusion 为什么ListAppend是非破坏性的,而ArrayAppend和StructInsert都是破坏性的?,coldfusion,Coldfusion,我刚刚花了将近一个小时试图找出一个问题,即列表总是返回空字符串。我使用ListAppend就像使用ArrayAppend或StructInsert一样,但显然ListAppend的工作方式不同。如果有的话,ListAppend的工作方式与其他方式不同的原因是什么 <cfset ListAppend(list, item)> 列表=“” 数组[1]=项 <cfset StructInsert(struct, 'key', item)> struct.key=

我刚刚花了将近一个小时试图找出一个问题,即列表总是返回空字符串。我使用ListAppend就像使用ArrayAppend或StructInsert一样,但显然ListAppend的工作方式不同。如果有的话,ListAppend的工作方式与其他方式不同的原因是什么

<cfset ListAppend(list, item)>

列表=“”


数组[1]=项

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


struct.key=item

ColdFusion中的列表只是字符串,ColdFusion(和Java)中的字符串是不可变的。它们无法改变。因此ListAppend()必须返回一个带有该值的新字符串,而不是修改现有字符串

<cfset newList = listAppend(oldList, "New Value") />


可能是因为列表太大了。与数组和结构不同,字符串是不可更改的,这意味着它们不能更改。要“附加”一个新值,您需要创建一个全新的字符串。数组和结构是可变的。所以你可以“就地”修改它们。

我昨天有个问题。谢谢你这么清楚的回答。我昨天也有同样的经历和问题。可能是重复的
<cfset newList = listAppend(oldList, "New Value") />