coldfusion - 如何测试 ColdFusion 结构中是否存在变量?

标签 coldfusion

我想测试:

<cfif Exists(MyStruct["mittens"])>
</cfif>

如果 MyStruct 中不存在“mittens”键,它将返回什么? 0,还是“”??

应该用什么替换 Exists 函数?

更新

我试过了,

<cfif IsDefined(MyStruct.mittens)>

这也会引发错误

Element Mittens is undefined in MyStruct.

最佳答案

要测试 key 是否存在,我建议:

<cfif StructKeyExists(MyStruct, "mittens")>

<!--- or --->

<cfset key = "mittens">
<cfif StructKeyExists(MyStruct, key)>

在幕后,这会调用 ColdFusion 结构所基于的 java.util.map 的 containsKey() 方法。这可以说是查找 key 是否存在的最快方法。

替代方案是:

<cfif IsDefined("MyStruct.mittens")>

<!--- or --->

<cfset key = "mittens">
<cfif IsDefined("MyStruct.#key#")>

在幕后,它对传递的字符串调用 Eval() (至少我相信)并告诉您结果是否是变量引用。相比之下,这比 StructKeyExists() 慢。从好的方面来说:您可以在一次调用中测试嵌套结构中的子键:

<cfif IsDefined("MyStruct.with.some.deeply.nested.key")>

关于coldfusion - 如何测试 ColdFusion 结构中是否存在变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771226/

相关文章:

javascript - 使用 jquery 的相关选择未按预期工作

excel - 下载excel表查询结果,无需写入文件coldfusion

coldfusion - 我可以在 onApplicationStart() 内部设置 this.customTagPaths 吗?

java - 具有 IP 验证且仅允许用户投票的机制 : problem in getting user IP address with two app servers and apache in front

Coldfusion UserAgent 日志?

asp.net - 作为 ColdFusion 开发人员后,您应该如何学习 ASP.NET?

coldfusion - 哪些文件扩展名受ColdFusion的Trusted Cache影响

mysql - 如何在事务回滚中恢复自动ID

coldfusion - Jsoup 在 CFscript 上发布数据并解析替代 URL

java - Java/ColdFusion 和 Lucee 之间的 identityHashCode 区别