我想測試:如何測試一個變量是否存在於ColdFusion結構中?
<cfif Exists(MyStruct["mittens"])>
</cfif>
如果「手套」項不存在MYSTRUCT,會是什麼回來? 0,還是「」?
什麼應該替代存在函數?
UPDATE
我試過,
<cfif IsDefined(MyStruct.mittens)>
這也引發錯誤
元素手套在MYSTRUCT不確定的。
我想測試:如何測試一個變量是否存在於ColdFusion結構中?
<cfif Exists(MyStruct["mittens"])>
</cfif>
如果「手套」項不存在MYSTRUCT,會是什麼回來? 0,還是「」?
什麼應該替代存在函數?
UPDATE
我試過,
<cfif IsDefined(MyStruct.mittens)>
這也引發錯誤
元素手套在MYSTRUCT不確定的。
爲了測試鍵的存在,我推薦:
<cfif StructKeyExists(MyStruct, "mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif StructKeyExists(MyStruct, key)>
幕後這就要求java.util中的containsKey()
方法。 ColdFusion結構所基於的映射。這可以說是找出密鑰是否存在的最快方法。
另一種方法是:
<cfif IsDefined("MyStruct.mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif IsDefined("MyStruct.#key#")>
這個呼籲傳遞的字符串(或因此我認爲)在幕後,並告訴你,如果結果是一個變量引用。相比之下,這比StructKeyExists()
慢。好的一面:您可以在一次調用中測試嵌套結構中的子密鑰:
<cfif IsDefined("MyStruct.with.some.deeply.nested.key")>
找到了答案here
這是StructKeyExists
IsDefined也可以,但速度較慢。 – Tomalak 2009-04-21 06:58:52