2009-04-21 17 views

Respuesta

35

Para probar la existencia clave, recomiendo:

<cfif StructKeyExists(MyStruct, "mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif StructKeyExists(MyStruct, key)> 

Detrás de las escenas de esta llama al método de la java.util containsKey(). mapa en el que se basa la estructura ColdFusion. Este es sin duda el método más rápido para descubrir si existe una clave.

La alternativa es:

<cfif IsDefined("MyStruct.mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif IsDefined("MyStruct.#key#")> 

Detrás de las escenas de esta llama Eval() en la cadena pasada (o eso creo) y le indica si el resultado es una referencia variable. En comparación, esto es más lento que StructKeyExists(). En el lado positivo: puede probar una subclave en una estructura anidada en una llamada:

<cfif IsDefined("MyStruct.with.some.deeply.nested.key")> 
2

encontrado la respuesta here

Es StructKeyExists

+0

IsDefined funcionaría también, pero es más lento. – Tomalak

+2

El motivo por el que IsDefined no le funcionaba, ya que las citas dobles faltaban. En lugar de buscar la clave de estructura 'mitones', intentaba quitar la referencia a la tecla mitones para ver si había existencia. Es por eso que todavía recibías el error –

Cuestiones relacionadas