我想测试一下:
<cfif Exists(MyStruct["mittens"])>
</cfif>
如果MyStruct中不存在“连指手套”键,它会返回什么? 0,或“”??
什么应该取代存在功能?
更新
我试过了,
<cfif IsDefined(MyStruct.mittens)>
这也会引发错误
元素手套在MyStruct中未定义。
答案 0 :(得分:35)
为了测试密钥的存在,我建议:
<cfif StructKeyExists(MyStruct, "mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif StructKeyExists(MyStruct, key)>
在幕后,这将调用ColdFusion结构所基于的java.util.map的containsKey()
方法。这可以说是找出密钥是否存在的最快方法。
替代方案是:
<cfif IsDefined("MyStruct.mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif IsDefined("MyStruct.#key#")>
在幕后,这会在传递的字符串上调用Eval()
(或者我相信),并告诉您结果是否为变量引用。相比之下,这比StructKeyExists()
慢。从好的方面来说:您可以在一次调用中测试嵌套结构中的子键:
<cfif IsDefined("MyStruct.with.some.deeply.nested.key")>
答案 1 :(得分:2)
找到答案here
它是StructKeyExists