gpt4 book ai didi

coldfusion - 是否有必要在CFScript中更改作用域循环变量?

转载 作者:行者123 更新时间:2023-12-04 06:27:29 25 4
gpt4 key购买 nike

当使用CFML和CF9时,我通常使用var作用域循环变量。在这种情况下,为local.i,例如:

<cfloop list="#this.list#" index="local.i">
<cfif Len(local.i) GT 10>
// do something
</cfif>
</cfloop>

我最近开始将一些东西转换为CFScript,(令我失望的是,我发现无法循环遍历CFScript中的列表)我想知道是否仍然应该对循环变量进行范围调整,以及如何:
for (i = 1; LTE ListLen(this.list); i = i + 1 ) {
if (Len(ListGetAt(this.list, i) GT 10)) {
// do something
}
}

我应该使用 local.i = 1local.i = local.i + 1代替示例中的示例代码吗?有必要吗?

编辑:我还应该问一下我的CFML循环的CFScript形式是否正确。我问是因为我刚刚注意到我的CFML循环为 ,参数使用了 delimiter(逗号和空格),在循环的CFScript版本中似乎不存在。

最佳答案

如果您未指定变量范围,则默认情况下,所有函数仍将使用变量作用域,这将使其不具有线程安全性。无论您以前应该在哪里使用var,现在都应该使用local

至于逗号和空格分隔符,有两件事:

  • 如果您不知道,列表函数的delimiters参数不适用于多字符定界符,而是用于多个定界符;因此您的列表将针对每次出现的逗号和每次出现的空格进行拆分。
  • 您可以将相同的参数用作listLenlistGetAt方法的一部分,如下所示:
    for (i = 1; LTE ListLen(this.list, ', '); i = i + 1 ) {
    if (Len(ListGetAt(this.list, i, ', ') GT 10)) {
    // do something
    }
    }
  • 关于coldfusion - 是否有必要在CFScript中更改作用域循环变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611617/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com