Jim*_*mmy 2 coldfusion if-statement
我如何在CF中创建此语句?
<cfif (not isdefined("URL.room") or #URL.room# EQ "")
and (not isdefined("URL.system" or #URL.system# EQ "")
and (not isdefined("URL.date") or #URL.date# EQ "")>
Run Code Online (Sandbox Code Playgroud)
显然括号不起作用,但说明了我想要完成的事情.这是什么语法?
编辑: 好的,我了解如何使用EQ等等.我发布这个有点匆忙.我的问题是关于括号.以这种方式使用它们在语法上是否正确?
Pet*_*ton 15
编辑:好的,我了解如何使用EQ等等.我发布这个有点匆忙.我的问题是关于括号.以这种方式使用它们在语法上是否正确?
从句法上讲,是的.代码的语法是正确的,不会引发语法错误.
但是,它不一定是最好的方法.至少你应该有换行符,以使其更具可读性,如下所示:
<cfif (not isdefined("URL.room") or URL.room EQ "")
and (not isdefined("URL.system" or URL.system EQ "")
and (not isdefined("URL.date") or URL.date EQ "")
>
Run Code Online (Sandbox Code Playgroud)
而且我更倾向于这样写:
<cfif NOT
( ( isDefined('Url.Room') AND Len(Url.Room) )
OR ( isDefined('Url.System') AND Len(Url.System) )
OR ( isDefined('Url.Date') AND Len(Url.Date) )
)>
Run Code Online (Sandbox Code Playgroud)
因为它更具可读性,并且更明显的是每行检查相同的东西.
无论如何,假设我在一个IF语句中这样做.
如果你开始有很多条件要检查,你可能会考虑做这样的事情:
<cfset FieldList = "Room,System,Date" />
<cfset AllFieldsValid = true />
<cfloop index="Field" list="#FieldList#">
<cfif NOT ( StructKeyExists(Url,Field) AND Len(Url[Field]) )>
<cfset AllFieldsValid = false />
<cfbreak/>
</cfif>
</cfloop>
<cfif AllFieldsValid>
...
Run Code Online (Sandbox Code Playgroud)
一开始可能看起来令人生畏,但更容易维护 - 你只需要向FieldList添加一个新项目(你可能已经有一个变量用于那个purporse).
无论如何,希望这一切都有所帮助 - 如果有任何问题,请告诉我.
| 归档时间: |
|
| 查看次数: |
24664 次 |
| 最近记录: |