试图用另一组结构包裹一个结构
trying to wrap a structure with another set of structure
我正在尝试用另一个结构包裹一个结构,但我确实遗漏了一些东西
我想这样展示
account: {
"name": "Example Account",
"details": "https://www.example.com"
}
我正在尝试这个功能,但我遗漏了一些东西,可能我应该使用 structmap,不确定
<cffunction name="SO">
<cfargument name="name" required="true" type="struct">
<cfargument name="data" required="true" type="struct">
<cfloop collection="#arguments.Data#" index="i">
<cfset arguments.Name['#lcase(i)#'] = arguments.Data[i]>
</cfloop>
<cfreturn arguments.Name>
</cffunction>
当我第一次看到它时,我认为您本质上想要一个新结构,其中包含一个 "name"(包含一个字符串)和一个包含一个结构的 "data"。
您的初始设置基本上是
<cfset name = "Test" >
<cfset data = { details: "detail1" , details2: "detail2" } >
在处理 CF 中的大多数数据结构时,我通常发现使用 CFSCRIPT 而不是标签更容易和更清晰。所以我想出了
<cfscript>
function SO ( required String name, required Struct data ) {
var retval = { name:"",data:{} } ;
retval.name = arguments.name ;
arguments.data.map( function(key, val) {
retval.data[key.lcase()] = val ;
} ) ;
return retval;
}
writedump( SO(name,data) ) ;
</cfscript>
为了解决这个问题,您似乎只是想在 "data" 结构中添加一个 "name" 值。这可以通过
轻松完成
<cffunction name="SO_tags">
<cfargument name="name" required="true" type="string">
<cfargument name="data" required="true" type="struct">
<cfset retval2 = arguments.data >
<cfset retval2.name = arguments.name>
<cfreturn retval2>
</cffunction>
<cfset structure = {"account":SO_tags(name,data)}>
<cfdump var = #structure#>
或者使用脚本,它可以简化为一行。
<cfscript>
function SO3 ( required String name, required Struct data ) {
return arguments.data.append( {"name":arguments.name} ) ;
}
writedump( {"account":SO3(name,data)} ) ;
</cfscript>
根据这如何适合您的其余代码,您甚至可能不需要函数。
编辑:更改输出以将其嵌套在 "account" 结构中。
我正在尝试用另一个结构包裹一个结构,但我确实遗漏了一些东西
我想这样展示
account: {
"name": "Example Account",
"details": "https://www.example.com"
}
我正在尝试这个功能,但我遗漏了一些东西,可能我应该使用 structmap,不确定
<cffunction name="SO">
<cfargument name="name" required="true" type="struct">
<cfargument name="data" required="true" type="struct">
<cfloop collection="#arguments.Data#" index="i">
<cfset arguments.Name['#lcase(i)#'] = arguments.Data[i]>
</cfloop>
<cfreturn arguments.Name>
</cffunction>
当我第一次看到它时,我认为您本质上想要一个新结构,其中包含一个 "name"(包含一个字符串)和一个包含一个结构的 "data"。
您的初始设置基本上是
<cfset name = "Test" >
<cfset data = { details: "detail1" , details2: "detail2" } >
在处理 CF 中的大多数数据结构时,我通常发现使用 CFSCRIPT 而不是标签更容易和更清晰。所以我想出了
<cfscript>
function SO ( required String name, required Struct data ) {
var retval = { name:"",data:{} } ;
retval.name = arguments.name ;
arguments.data.map( function(key, val) {
retval.data[key.lcase()] = val ;
} ) ;
return retval;
}
writedump( SO(name,data) ) ;
</cfscript>
为了解决这个问题,您似乎只是想在 "data" 结构中添加一个 "name" 值。这可以通过
轻松完成<cffunction name="SO_tags">
<cfargument name="name" required="true" type="string">
<cfargument name="data" required="true" type="struct">
<cfset retval2 = arguments.data >
<cfset retval2.name = arguments.name>
<cfreturn retval2>
</cffunction>
<cfset structure = {"account":SO_tags(name,data)}>
<cfdump var = #structure#>
或者使用脚本,它可以简化为一行。
<cfscript>
function SO3 ( required String name, required Struct data ) {
return arguments.data.append( {"name":arguments.name} ) ;
}
writedump( {"account":SO3(name,data)} ) ;
</cfscript>
根据这如何适合您的其余代码,您甚至可能不需要函数。
编辑:更改输出以将其嵌套在 "account" 结构中。