Чтобы проверить наличие ключа, я рекомендую:
<cfif StructKeyExists(MyStruct, "mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif StructKeyExists(MyStruct, key)>
За кулисами это вызывает метод containsKey()
файла java.util.map, на котором основана структура ColdFusion. Возможно, это самый быстрый способ выяснить, существует ли ключ.
Альтернатива:
<cfif IsDefined("MyStruct.mittens")>
<!--- or --->
<cfset key = "mittens">
<cfif IsDefined("MyStruct.#key#")>
За кулисами это вызывает Eval()
для переданной строки (или, как я полагаю) и сообщает вам, является ли результат ссылкой на переменную. По сравнению это медленнее, чем StructKeyExists()
. С положительной стороны: вы можете проверить вложенный ключ во вложенной структуре за один вызов:
<cfif IsDefined("MyStruct.with.some.deeply.nested.key")>