Fer*_*gus 1 coldfusion coldfusion-9
我试图评估两个动态分配的变量; 然后尝试根据结果分配动态变量.我有更长的代码,这是有效的,但我正在努力巩固.
以下是我对合并代码的看法:
<cfloop list="dog,cat,pig,horse" index="i">
<cfif (#trim([i]_FMCTotal)# /2) GT #trim([i]_FMC)#>
<cfset #i#colorCode = 'red'>
<cfelseif (#trim([i]_FMCTotal)# /1.5) GT #trim([i]_FMC)#>
<cfset #i#colorCode = 'yellow'>
<cfelse>
<cfset #i#colorCode = 'green'>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
由于您有一些无效的CFML构造(例如,[i]_FMCTotal它不是有效的变量名称),因此您发布的代码中没有太多代码会通过解析器.在条件语句中也不需要使用哈希值,哈希值用于输出.
要回答这个问题,有evaluate()一个更具可读性,安全性和可维护性的解决方案是利用颜色代码的结构.
<cfset colorCodes = {}>
<!--- presuming ..._FMCTotal and .._FMC are reworked as structs also --->
<cfloop list="dog,cat,pig,horse" index="i">
<cfif (FMCTotal[i] /2) GT trim(FMC[i])>
<cfset colorCode[i] = 'red'>
<cfelseif (trim(FMCTotal[i] /1.5) GT trim(FMC[i])>
<cfset colorCode[i] = 'yellow'>
<cfelse>
<cfset colorCode[i] = 'green'>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
结果将是一个数据结构,您可以从中轻松访问后续代码中的任何项值
{ // possible result
'pig': 'green'
, 'cat': 'yellow'
, 'dog': 'red'
, 'horse': 'green'
}
colorCode['dog'] // => 'red'
Run Code Online (Sandbox Code Playgroud)
如果您无权重新编写_FMC变量,那么您可以对这些变量进行评估,evaluate('#i#_FMCTotal')但是对于这些变量使用集合也会更加清晰,就像在我的示例中一样.
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |