2009-08-19 10 views
10

Czy istnieje jakaś "krótka" składnia do tworzenia struktury w ColdFusion? Chciałbym wymienić ten kod opisowy:Czy ColdFusion ma krótką składnię do tworzenia struktury?

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

z czymś bardziej podobnego obiektu JavaScript:

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

Czy istnieje coś takiego?

Odpowiedz

16

ColdFusion 8 (i aż) ma struct dosłownego zapisu:

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

Jednakże, istnieje kilka ciągów załączone:

Uwaga: ColdFusion 9 stałe błędy opisane powyżej, więc z każdą wersją CF dostępne obecnie będzie w porządku. Wciąż pozostawiam linki w celach informacyjnych.

+0

, więc w zasadzie można używać tylko tej krótkiej składni do tworzenia jednowymiarowej struktury, która jest przypisana do zmiennej. ale nie możesz go utworzyć, aby przejść do funkcji w locie, tak jak chciałem. Przypuszczam, że to bardziej jak kilka * łańcuchów * dołączonych ... – Kip

+0

brzmi jak to zostanie naprawione w CF9! – Kip

+0

Tak, "łańcuchy" mogą być dokładniejsze. Zapisałbym literały strukturalne CF8 pod "jeden dzień za późno i jeden dolar za krótki".Nie wiem, dlaczego to wytworzyli - w obecnej formie nie ma to większego sensu. – Tomalak

2

W ColdFusion 8 i powyżej można utworzyć strukturę takiego:

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

Kip, w CF8 możesz użyć tej składni, jak mówi Sam, ale nie możesz jej użyć w argumentach do funkcji. W CF9 można używać notacji strukturalnej w argumentach funkcji; w ten sposób powyższy przykład zadziała (z = zamiast:) –

3

W Railo 3 i powyżej utworzyć tak:

  • Struct struct (A 1, B: 2, c, 3: d: "A A")
  • tablicy: Tablica (1 2,3 "AAA")
  • zapytanie: zapytanie (kol1: tablica (1.1,1.2,1,3) kolumna2: tablica (2.1,2.2,2,3))
+0

Aall te były możliwe od Railo 1. –

1

można było użyj cfjson. Dodaj komponent do zakresu, którego używasz (np zakresu życzenie):

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

i nazywają to lubią:

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

Jeśli próby uproszczenia struct składnię w CF8 napotkasz gniazdowania i/lub braki inline można użyć tej pozornie prostej funkcji:

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

następnie można użyć następującej składni:

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

Nazwałem mój 'array()', bo tak to działa w php;) –

Powiązane problemy