struct - 试图用另一组结构包装一个结构
问题描述
我正在尝试用另一个结构包装一个结构,但我肯定错过了一些东西
我想这样展示
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>
解决方案
当我第一次看到这个时,我以为你本质上想要一个新的结构,它有一个“名称”(包含一个字符串)和一个包含一个结构的“数据”。
您的初始设置基本上是
<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>
试图解开这一点,您似乎要做的就是向您的“数据”结构添加一个“名称”值。这可以很容易地完成
<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>
根据它如何适合您的代码的其余部分,您甚至可能不需要函数。
编辑:更改输出以将其嵌套在“帐户”结构中。
推荐阅读
- c - 为什么“K”个数的输出多于输入字符?
- r - 如何使用 srvyr 包中的函数编写一个包含管道的函数?
- r - 基于 dplyr 链中多个列的条件评估的变异变量
- javascript - 在 WIX 中,如何对表中的引用字段进行排序
- react-hooks-testing-library - 如何与 useEffect/setState 挂钩
- c - 我做了我的项目并且有clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
- java - 空共享首选项导致我的应用程序崩溃
- python - 如何更改字典列表中的值类型(从浮点数到整数)?
- python - 如何用其他字符替换0和1字符串中的字符
- r - R strsplit 使用正则表达式