Coldfusion 为什么ListAppend是非破坏性的,而ArrayAppend和StructInsert都是破坏性的?
我刚刚花了将近一个小时试图找出一个问题,即列表总是返回空字符串。我使用ListAppend就像使用ArrayAppend或StructInsert一样,但显然ListAppend的工作方式不同。如果有的话,ListAppend的工作方式与其他方式不同的原因是什么Coldfusion 为什么ListAppend是非破坏性的,而ArrayAppend和StructInsert都是破坏性的?,coldfusion,Coldfusion,我刚刚花了将近一个小时试图找出一个问题,即列表总是返回空字符串。我使用ListAppend就像使用ArrayAppend或StructInsert一样,但显然ListAppend的工作方式不同。如果有的话,ListAppend的工作方式与其他方式不同的原因是什么 <cfset ListAppend(list, item)> 列表=“” 数组[1]=项 <cfset StructInsert(struct, 'key', item)> struct.key=
<cfset ListAppend(list, item)>
列表=“”
数组[1]=项
<cfset StructInsert(struct, 'key', item)>
struct.key=itemColdFusion中的列表只是字符串,ColdFusion(和Java)中的字符串是不可变的。它们无法改变。因此ListAppend()必须返回一个带有该值的新字符串,而不是修改现有字符串
<cfset newList = listAppend(oldList, "New Value") />
可能是因为列表太大了。与数组和结构不同,字符串是不可更改的,这意味着它们不能更改。要“附加”一个新值,您需要创建一个全新的字符串。数组和结构是可变的。所以你可以“就地”修改它们。我昨天有个问题。谢谢你这么清楚的回答。我昨天也有同样的经历和问题。可能是重复的
<cfset newList = listAppend(oldList, "New Value") />