gpt4 book ai didi

coldfusion - ColdFusion 中数组的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 00:57:50 24 4
gpt4 key购买 nike

我遇到了一段代码的问题,稍微修改一下我就会得到不同的结果,但事实并非如此。

版本 1 给出了正确的结果,我面临版本 2 的问题,这是实际的代码。

版本 1:

<cfset keywords = listToArray("1,2,3,4,5,6,7,8,9,10")>

<!--- Common Code Below --->
<cfoutput>#getMetadata(keywords).getName()#</cfoutput>

<cfset toBeAdded = keywords>
<cfset toBeInactivated = listToArray("1,3,4,6,8")>
<cfset toBeActivated = toBeInactivated>

<cfset toBeAdded.removeAll(toBeInactivated)>
<cfset toBeInactivated.removeAll(keywords)>
<cfset toBeActivated.retainAll(keywords)>

版本 2:

<cfset keywords = []>
<cfloop from="1" to="10" index="counter">
<cfset arrayAppend( keywords, counter )>
</cfloop>

<!--- If I add following line here then it is working as expected and similar to version 1: --->
<!--- <cfset keywords = listToArray(arrayToList(keywords))> --->

<!--- Common Code Below --->
<cfoutput>#getMetadata(keywords).getName()#</cfoutput>

<cfset toBeAdded = keywords>
<cfset toBeInactivated = listToArray("1,3,4,6,8")>
<cfset toBeActivated = toBeInactivated>

<cfset toBeAdded.removeAll(toBeInactivated)>
<cfset toBeInactivated.removeAll(keywords)>
<cfset toBeActivated.retainAll(keywords)>

输出:

enter image description here enter image description here

要点如下:Version 1Version 2 .

非常感谢任何建议!

最佳答案

我不是 Java 人员,但据我所知......

在版本 1 中:keywords包含java.lang.String值,在版本 2 中:keywords包含java.lang.Double值。

在版本 2 中:toBeInactivated包含要从 double 组中删除的字符串值。

由于这些 Java 类型不匹配,因此它们将无法从集合中正确删除。我猜当 CF 传递底层对象数据时,它永远不会正确转换。老实说,当一切对于 CF 来说都是无类型的时,我会期望这一点。

根据下面 @Twillen 的评论添加,当您转换 counter 时,此功能有效。类型为 java.lang.String :

<cfset keywords = []>
<cfloop from="1" to="10" index="counter">
<cfset arrayAppend( keywords, javaCast("string", counter) )>
</cfloop>


<!--- Common Code Below --->
<cfoutput>#getMetadata(keywords).getName()#</cfoutput>

<cfset toBeAdded = keywords>
<cfset toBeInactivated = listToArray("1,3,4,6,8")>
<cfset toBeActivated = toBeInactivated>

<cfset toBeAdded.removeAll(toBeInactivated)>
<cfset toBeInactivated.removeAll(keywords)>
<cfset toBeActivated.retainAll(keywords)>

<cfdump var="#toBeAdded#" label="To Be Added">
<cfdump var="#toBeInactivated#" label="To Be Inactivated">
<cfdump var="#toBeActivated#" label="To Be Activated">

关于coldfusion - ColdFusion 中数组的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820150/

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