有没有办法在一个优雅的代码行中编写这个逻辑?
<cfif ThumbnailWidth EQ 0>
<cfset Width = 75>
<cfelse>
<cfset Width = ThumbnailWidth>
</cfif>
Run Code Online (Sandbox Code Playgroud)
Dan*_*sen 28
Coldfusion 9:
<!--- Syntax: ((condition) ? trueStatement : falseStatement) --->
<cfset width = ((ThumbnailWidth EQ 0) ? 75 : ThumbnailWidth) />
Run Code Online (Sandbox Code Playgroud)
Coldfusion 8及以下:
<!--- Syntax: IIf(condition, trueStatement, falseStatement) --->
<cfset width = IIf((ThumbnailWidth EQ 0), 75, ThumbnailWidth) />
Run Code Online (Sandbox Code Playgroud)
有人会说出于性能原因应避免使用IIf().在这个简单的情况下,我相信你会发现没有区别.Ben Nadel的Blog 更多地讨论了IIF()性能以及CF 9中新的三元运算符.
小智 6
我发现你原来的优雅足够 - 讲述故事,易于阅读.但这绝对是个人偏好.幸运的是,在CFML中总是至少有九种方法可以做任何事情.
你可以将它放在一行(CFML没有行尾要求):
<cfif ThumbnailWidth EQ 0><cfset Width = 75><cfelse><cfset Width = ThumbnailWidth></cfif>
Run Code Online (Sandbox Code Playgroud)
你也可以使用IIF()函数 - 它会做的伎俩:
<cfset Width = IIf(ThumbnailWidth EQ 0, 75, ThumbnailWidth)>
Run Code Online (Sandbox Code Playgroud)
这个结构有点奇怪 - 我觉得更清楚.IIF()的强度在于它也可以在线使用(毕竟它是一个函数).例如:
<img src="#ImageName#" width="#IIf(ThumbnailWidth EQ 0, 75, ThumbnailWidth)#">
Run Code Online (Sandbox Code Playgroud)
最后一种形式通常用于在注入动态代码时保持干净(错)的HTML布局.