Coldfusion ArraySet()v。用户定义的cffunction

时间:2014-08-29 19:26:49

标签: coldfusion

我替换了我找到的用户定义的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)

然而,最终结果有所不同,并在用户页面上引发了异常。

这些功能有何不同?

1 个答案:

答案 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);