gpt4 book ai didi

Coldfusion 的 StructCopy 和 URL 范围

转载 作者:行者123 更新时间:2023-12-03 22:50:31 25 4
gpt4 key购买 nike

今天我遇到了一个有趣的场景,使用 StructCopy 和 URL 范围。

我不是在寻找如何解决它的答案 - 我知道/已经使用过 structAppend/duplicate 等

我想将 URL 范围复制到一个新结构中,这样我就可以在不影响 URL 范围本身的情况下处理/更改它,所以我使用了 structCopy( url ) .我知道 structcopy 是结构的浅拷贝,但因为我的 url 范围将只包含 url 参数(据我所知 - 这是正确的吗?无论如何,它们都是我对这种情况感兴趣的),它们是字符串键/值然后我认为一个浅拷贝就足够了(字符串是不可变的等等)。

然而,当复制 URL 范围时,它导致了奇怪的行为 - 看起来好像 structCopy(url)只返回 url 范围 - 不是它的副本,不是错误。例如,如果我执行以下操作(假设我有 url 查询参数,包括一个名为“rob”的参数:

<cfset local.clonedUrl = structCopy( url ) />
<cfdump var="#local.clonedUrl#">
<cfdump var="#url#">
<cfset structDelete( local.clonedUrl, "rob" ) />
<cfdump var="#local.clonedUrl#">
<cfdump var="#url#">

在上面的场景中,在 struct delete 调用之后, clonedUrl 和 URL 都删除了条目(显然,使用正常创建的 Struct 而不是 URL 执行上面的操作是正确的)

所以,我的问题是:
  • 什么?我已经看到 URL 作用域实际上是 Coldfusions URLScope 类的一个实例,因此可能因此被区别对待,但是从 structCopy 调用返回相同的实例只是意思。至少如果它不能这样做,我会期望一个错误,而不是看起来与预期非常相似的结果,但实际上正是我想要避免的行为。还注意到如果我将一个组件传递给 structCopy 它似乎有类似的结果。
  • 什么是 URLScope - 它是否扩展了 Struct?当我转储类名时,我看到它是一个 URLScope,但只是转储对象就像转储结构一样转储它。有人对查看对象的源代码或至少是 API/Javadocs 类型规范有什么建议吗?

  • 我正在使用 CF10(我不是在寻找如何解决它的答案 - 我知道/已经使用过 structAppend/duplicate 等)

    最佳答案

    感谢大家的评论 - 结论是不要将 StructCopy() 与 URL 对象(以及可能在 Form 范围对象等上)一起使用。这很糟糕,但 URL 从技术上讲并不是一个结构体,所以所有的赌注都没有了。 ( I moan some more here )

    关于Coldfusion 的 StructCopy 和 URL 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21853842/

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