我替换了我找到的用户定义的CF函数。
<cffunction name="initializeValues" returntype="array" output="false">
<!--- Initialize all elements of an array to zero --->
<cfargument name="inArray" required="yes" type="array">
<cfargument name="inCount" required="yes" type="numeric">
<cfloop index="i" from="1" to="#inCount#">
<cfset inArray[i] = 0>
</cfloop>
<cfreturn inArray>
</cffunction>
内置CF9功能
ArraySet(arrayName, startingIndex, endingIndex, 0)
然而,最终结果有所不同,并在用户页面上引发了异常。
这些功能有何不同?
答案 0 :(得分:2)
您需要提供更多细节。你是什么意思“以某种方式不同”和抛出什么异常?
不知道更多,一个主要区别是ArraySet
修改了“就地”数组。而cffunction
没有。随着udf的数组被“按值”传递,所以该函数对原始数组对象没有影响。相反,您必须捕获返回的数组。 (当然,首先要求数组参数没有任何意义,但是......这是一个不同的主题。)
arr = initializeValues([], 10);
writeDump(arr);
由于ArraySet
修改了数组,因此返回true / false。也许您错误地捕获了ArraySet
的结果并覆盖了您的数组对象?
// wrong: overwrites the array
arr = [];
arr = ArraySet(arr, 1, 10, 0);
writeDump(arr);
// correct
arr = [];
ArraySet(arr, 1, 10, 0);
writeDump(arr);