我正在玩onError所以我尝试使用大型xml文档对象创建错误。
<cfset XMLByRef = variables.parsedXML.XMLRootElement.XMLChildElement>
<cfset structDelete(variables.parsedXML, "XMLRootElement")>
<cfset startXMLShortLoop = getTickCount()>
<cfloop from = "1" to = "#arrayLen(variables.XMLByRef)#" index = "variables.i">
<cfoutput>#variables.XMLByRef[variables.i].id.xmltext#</cfoutput><br />
</cfloop>
<cfset stopXMLShortLoop = getTickCount()>
我预计会收到错误,因为我删除了我引用的结构。
来自LiveDocs:
而是我得到了变量赋值 - 创建一个 附加的引用或别名 结构体。对数据的任何更改 使用一个变量名称更改 您使用的访问结构 其他变量名称。这种技术是 在您想要添加本地时很有用 变量到另一个范围或其他 不用改变变量的范围 从中删除变量 原始范围。
580df1de-3362-ca9b-b287-47795b6cdc17
25a00498-0f68-6f04-a981-56853c0844ed
... ... ...
db49ed8a-0ba6-8644-124a-6d6ebda3aa52
57e57e28-e044-6119-afe2-aebffb549342
在297毫秒内循环12805次
<cfdump var = "#variables#">
显示结构中没有任何内容,只是使用XMLRootElement的值解析了XMLXRoot.xmlName。 我也试过
<cfset structDelete(variables.parsedXML.XMLRootElement, "XMLChildElement")>
以及两者的structClear。
有关从xml文档对象中删除的详细信息。 http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-78e3.html
有人可以解释我错误的逻辑吗?感谢。
答案 0 :(得分:2)
XML数据类型是结构和数组的组合。与结构不同,CF中的数组将通过值传递,而不是通过引用传递,可能就是您所看到的。
http://www.coldfusionjedi.com/index.cfm/2009/5/1/ColdFusion-and-Pass-by-Reference-versus-Value