Coldfusion数组集。用户定义的CFF函数

Coldfusion数组集。用户定义的CFF函数,coldfusion,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="inCou

我替换了我找到的这个用户定义的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>
然而,最终的结果却有所不同,并在用户页面上抛出了一个异常


这些功能有何不同?

您需要提供更多细节。你所说的“不同”是什么意思?抛出了什么异常

在不了解更多信息的情况下,一个主要区别是
ArraySet
修改数组“就地”。而
cf功能
则没有。使用udf时,数组是“按值”传递的,因此函数对原始数组对象没有影响。相反,您必须捕获返回的数组。(当然,首先需要一个数组参数没有任何意义,但是..这是另一个主题。)

由于
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); 

他们似乎做了同样的事情。您是否尝试过
cfdump
ing生成的数组并对它们进行比较,看看哪里可能出错?我已经创建了cfdump,但还没有运行它。MYou需要告诉我们结果的不同之处,以及错误是什么。否则,我们帮助你有点困难。旁白:你真的应该在你的函数中
var
那个
i
变量。因为我分配了ArraySet()的返回值,然后后来试图将其作为数组访问,当它变为BOOL时,这就是我的问题。那里的cfloop不是我的原创,根据经验,我同意在使用前初始化变量;必须来自我的C++背景。我确信这是用这个快速替换创建的逻辑问题。我本来会提供我关于结果的详细信息,但不幸的是,我要到周二才能获得这些信息。
    arr = initializeValues([], 10);
    writeDump(arr);
    // wrong: overwrites the array
    arr = [];
    arr = ArraySet(arr, 1, 10, 0);
    writeDump(arr); 

    // correct 
    arr = [];
    ArraySet(arr, 1, 10, 0);
    writeDump(arr);