2009-08-19 26 views
10

Có cú pháp "ngắn" nào để tạo cấu trúc trong Coldfusion không? Tôi muốn thay thế mã verbose này:Coldfusion có một cú pháp ngắn để tạo cấu trúc không?

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

với một cái gì đó giống như một đối tượng JavaScript:

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

Có bất cứ điều gì như thế này?

Trả lời

16

Coldfusion 8 (trở lên) có một cấu trúc ký hiệu đen:

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

Tuy nhiên, có một vài chuỗi được đính kèm:

Lưu ý: ColdFusion 9 cố định các lỗi nêu trên, như vậy với bất kỳ phiên bản CF có sẵn hiện nay bạn sẽ ổn thôi. Tôi vẫn còn trong các liên kết để tham khảo.

+0

vì vậy về cơ bản bạn chỉ có thể sử dụng cú pháp ngắn đó để tạo cấu trúc 1 chiều được gán cho một biến. nhưng bạn không thể tạo một cái để chuyển sang một hàm trên bay như tôi muốn. Tôi đoán đó là giống như một vài * dây chuyền * đính kèm ... – Kip

+0

âm thanh như thế này sẽ được cố định trong CF9 mặc dù! – Kip

+0

Vâng, "chuỗi" có thể chính xác hơn. Tôi sẽ gửi các tài liệu CF8 struct dưới "một ngày muộn và một đô la ngắn".Không chắc chắn tại sao họ tung ra điều đó - trong hình thức hiện tại của nó, nó không có ý nghĩa nhiều. – Tomalak

2

Trong ColdFusion 8 trở lên bạn có thể tạo một cấu trúc như thế này:

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

Kip, trong CF8 bạn có thể sử dụng cú pháp này, như Sam nói, nhưng bạn không thể sử dụng nó trong các đối số cho hàm. Trong CF9, bạn có thể sử dụng ký hiệu viết tắt struct trong các đối số cho các hàm; do đó, ví dụ trên của bạn sẽ hoạt động (với = thay vì: mặc dù) –

3

Trong Railo 3 trở lên bạn tạo như thế này:

  • Struct: struct (a: 1, b: 2 c: 3, d: "aaa")
  • mảng: mảng (1 , 2,3, "aaa")
  • Query: truy vấn (col1: mảng (1.1,1.2,1,3), col2: mảng (2.1,2.2,2,3))
+0

Tất cả những gì đã có thể kể từ khi Railo 1. –

1

Bạn có thể sử dụng cfjson. Thêm các thành phần vào một phạm vi bạn đang sử dụng (ví dụ như phạm vi yêu cầu):

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

và gọi nó là thích:

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

Nếu nỗ lực của bạn để đơn giản hóa cú pháp struct trong CF8 chạy vào làm tổ và/hoặc thiếu sót inline bạn có thể sử dụng chức năng này tưởng như đơn giản:

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

sau đó bạn có thể sử dụng cú pháp sau:

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

Tôi đặt tên là 'mảng()' cuz đó là cách nó hoạt động trong php;) –

Các vấn đề liên quan