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 有点受挫(我敢肯定这超出了您的控制范围,但我不得不写这让我很烦如此笨拙的代码)