2009-08-19 14 views
10

¿Existe alguna sintaxis "corta" para crear una estructura en ColdFusion? Me gustaría sustituir este código detallado:¿ColdFusion tiene una sintaxis corta para crear una estructura?

<cfscript> 
    ref = StructNew(); 
    ref.Template = "Label"; 
    ref.Language = "en"; 
    stcML = GetPrompts(ref); 
</cfscript> 

con algo más como un objeto JavaScript:

<cfscript> 
    stcML = GetPrompts({ Template: "Label", Language: "en" }); 
</cfscript> 

¿Hay algo como esto?

Respuesta

16

ColdFusion 8 (y hacia arriba) tiene una estructura notación literal:

<cfset objData = { 
    Key1 = "Value1", 
    Key2 = "Value2" 
} /> 

Sin embargo, hay algunas cadenas adjunta:

Nota: ColdFusion 9, fija los errores señalados anteriormente, por lo que con cualquier versión CF disponibles hoy en día que va a estar bien. Todavía me voy en los enlaces como referencia.

+0

, así que básicamente solo puede usar esa sintaxis corta para crear una estructura de 1 dimensión que está asignada a una variable. pero no puedes crear uno para pasar a una función sobre la marcha como yo quería. Supongo que es más como unas pocas * cadenas * conectadas ... ¡ – Kip

+0

parece que esto se solucionará en CF9! – Kip

+0

Sí, las "cadenas" pueden ser más precisas. Archivaba literales de estructuras CF8 en "un día tarde y un dólar corto".No estoy seguro de por qué lo lanzaron, en su forma actual, no tiene mucho sentido. – Tomalak

2

En ColdFusion 8 y superior puede crear una estructura como esta:

ref={template="label", language="en"} 
+2

Kip, en CF8 puede usar esta sintaxis, como dice Sam, pero no puede usarla en argumentos para funciones. En CF9, puede usar la notación de taquigrafía struct en argumentos para funciones; por lo tanto, su ejemplo anterior funcionaría (con = en lugar de: though) –

3

En Railo 3 y por encima se crea de esta manera:

  • Struct: struct (a: 1, b: 2, c: 3, d: "AAA")
  • array: array (1 , 2,3, "AAA")
  • de consulta: consulta (col1: array (1.1,1.2,1,3), col2: array (2.1,2.2,2,3))
+0

Todos esos han sido posibles desde Railo 1. –

1

Usted podría use cfjson. Añadir el componente a un ámbito que está utilizando (por ejemplo, la solicitud de alcance):

<cfobject name="request.json" component="cfc.json"> 

y llamar así:

<cfset aStructure = request.json.decode('{ Template: "Label", Language: "en" }')> 
5

Si sus intentos de simplificar la sintaxis estructura en CF8 encuentran con anidación y/o deficiencias en línea que pueden utilizar esta función aparentemente simple:

<cfscript> 
    function nStruct(){ 
     return arguments; 
    } 
</cfscript> 

continuación, puede utilizar esta sintaxis:

<cfdump var="#nStruct(
    a=1, 
    b=nStruct(
     c=2,d=3 
    ) 
)#" /> 
+0

He llamado mío 'array()' porque así es como funciona en php;) –

Cuestiones relacionadas