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