(这是我之前关于结构的问题的后续行动)
这会:
<cfset myArray = ArrayNew(1)>
<cfloop query="myQuery">
<cfset myArray[1] = queryCol1>
<cfset myArray[2] = queryCol2>
<cfset myArray[3] = queryCol3>
<cfset funcionWithArrayParam(myArray)>
</cfloop>
...比这更有效地使用系统资源:
<cfloop query="myQuery">
<cfset functionWithArrayParam([queryCol1, queryCol2, queryCol3])>
</cfloop>
?
并且为了保持焦点狭窄,假设第一个示例中的数组除了提供函数之外没有其他用途。此外,假设查询和/或列数据足够大以使效率成为值得考虑的因素。
第二种方法因其紧凑性而具有吸引力,但我担心的是我不确定它在每次迭代中创建了多少新数组。我相信第一种方法会创建一个,因为数组是在 CF 中按值传递的。但这是否意味着第二种方法会创建两个数组(一个隐式创建的数组,以及它的一个副本以在函数中使用)?
了解速记符号如何在性能方面与用于填充数组的多个 cfset 语句进行比较也会很有趣。我意识到这不是苹果对苹果,因为前者也创建了数组,但仍然......我想我可以自己轻松地测试这个。