Coldfusoin 中的代码优化,因为 String 在 Coldfusion 中是不可变的
code optimizing in coldfusoin, as String are immutable in Coldfusion
我是 Coldfusion 的新手,正在尝试构建类似
的字符串
<cfif qRoute.a IS NOT "">
<cfset str= qRoute.a>
<cfif qRoute.b IS NOT "">
<cfset str= str& " / "& qRoute.b>
</cfif>
<cfif qRoute.c IS NOT "" >
<cfset str= str& " / "& qRoute.c>
</cfif>
</cfif>
但在我看来,这是非常基础的技术。有没有更好的代码写法
这或许是一种方法。它是一个完整的独立复制品,但你想看的是 listAppend()
东西:
<cfscript>
qRoute = queryNew("");
queryAddColumn(qRoute, "a", "varchar", ["","a2","a3","a4"]);
queryAddColumn(qRoute, "b", "varchar", ["","","b3","b4"]);
queryAddColumn(qRoute, "c", "varchar", ["","","","c4"]);
</cfscript>
<cfloop query="qRoute">
<cfif not len(qRoute.a)>
<cfcontinue>
</cfif>
<cfset str = "">
<cfset str = listAppend(str, qRoute.a)>
<cfset str = listAppend(str, qRoute.b)>
<cfset str = listAppend(str, qRoute.c)>
<cfset str = listChangeDelims(str, "/")>
<cfoutput>[#str#]<br></cfoutput>
</cfloop>
在 ColdFusion 9 上,输出:
[a2]
[a3/b3]
[a4/b4/c4]
这就是您所追求的吗?
较新版本的 CFML 的代码会好得多,但是您使用过时版本的 CF 有点受挫(我敢肯定这超出了您的控制范围,但我不得不写这让我很烦如此笨拙的代码)
我是 Coldfusion 的新手,正在尝试构建类似
的字符串<cfif qRoute.a IS NOT "">
<cfset str= qRoute.a>
<cfif qRoute.b IS NOT "">
<cfset str= str& " / "& qRoute.b>
</cfif>
<cfif qRoute.c IS NOT "" >
<cfset str= str& " / "& qRoute.c>
</cfif>
</cfif>
但在我看来,这是非常基础的技术。有没有更好的代码写法
这或许是一种方法。它是一个完整的独立复制品,但你想看的是 listAppend()
东西:
<cfscript>
qRoute = queryNew("");
queryAddColumn(qRoute, "a", "varchar", ["","a2","a3","a4"]);
queryAddColumn(qRoute, "b", "varchar", ["","","b3","b4"]);
queryAddColumn(qRoute, "c", "varchar", ["","","","c4"]);
</cfscript>
<cfloop query="qRoute">
<cfif not len(qRoute.a)>
<cfcontinue>
</cfif>
<cfset str = "">
<cfset str = listAppend(str, qRoute.a)>
<cfset str = listAppend(str, qRoute.b)>
<cfset str = listAppend(str, qRoute.c)>
<cfset str = listChangeDelims(str, "/")>
<cfoutput>[#str#]<br></cfoutput>
</cfloop>
在 ColdFusion 9 上,输出:
[a2]
[a3/b3]
[a4/b4/c4]
这就是您所追求的吗?
较新版本的 CFML 的代码会好得多,但是您使用过时版本的 CF 有点受挫(我敢肯定这超出了您的控制范围,但我不得不写这让我很烦如此笨拙的代码)