Имеет ли ColdFusion короткий синтаксис для создания структуры?
Есть ли какой-нибудь "короткий" синтаксис для создания структуры в ColdFusion? Я бы хотел заменить этот подробный код:
<cfscript>
ref = StructNew();
ref.Template = "Label";
ref.Language = "en";
stcML = GetPrompts(ref);
</cfscript>
с чем-то более похожим на объект JavaScript:
<cfscript>
stcML = GetPrompts({ Template: "Label", Language: "en" });
</cfscript>
Есть ли что-нибудь подобное?
Ответы
Ответ 1
Coldfusion 8 (и вверх) имеет строковое литеральное обозначение:
<cfset objData = {
Key1 = "Value1",
Key2 = "Value2"
} />
Однако есть несколько строк:
Примечание. ColdFusion 9 исправил ошибки, описанные выше, поэтому с любой версией CF, доступной в настоящее время, вы будете в порядке. Я все еще оставляю ссылки для ссылок.
Ответ 2
Если ваши попытки упростить синтаксис структуры в CF8 при запуске и/или встроенных недостатках вы можете использовать эту обманчиво простую функцию:
<cfscript>
function nStruct(){
return arguments;
}
</cfscript>
Затем вы можете использовать этот синтаксис:
<cfdump var="#nStruct(
a=1,
b=nStruct(
c=2,d=3
)
)#" />
Ответ 3
В Railo 3 и выше вы создаете так:
- Struct: struct (a: 1, b: 2, c: 3, d: "aaa" )
- Массив: массив (1,2,3, "aaa" )
- Запрос: query (col1: array (1.1,1.2,1,3), col2: array (2.1,2.2,2,3))
Ответ 4
В ColdFusion 8 и выше вы можете создать такую структуру:
ref={template="label", language="en"}
Ответ 5
Вы можете использовать cfjson. Добавьте компонент в область действия, которую вы используете (например, область запроса):
<cfobject name="request.json" component="cfc.json">
и назовите его так:
<cfset aStructure = request.json.decode('{ Template: "Label", Language: "en" }')>