我想测试:
<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/