gpt4 book ai didi

coldfusion - 高级 cfif 语句

转载 作者:行者123 更新时间:2023-12-03 07:55:54 27 4
gpt4 key购买 nike

我将如何在 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 "")>

显然括号不起作用,但说明了我想要完成的工作。这是什么语法?

编辑:
好的,我了解如何使用 EQ 等等。我有点匆忙地发布了这个。我的问题是关于括号。以这种方式使用它们在语法上是否正确?

最佳答案

EDIT: Ok, I understand how to use EQ and all that. I posted this in a bit of a hurry. My question is about the parentheses. Is it syntactically correct to use them this way?



从语法上讲,是的。代码的语法是正确的,不会抛出语法错误。

但是,这不一定是最好的方法。至少你应该在那里有换行符,以使其更具可读性,如下所示:
<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 "")
>

我更倾向于这样写:
<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) )
)>

因为这更具可读性,并且使每一行都在检查相同的事情变得更加明显。

无论如何,这是假设我在单个 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>
...

乍一看可能令人生畏,但维护起来要容易得多 - 您只需向 FieldList 添加一个新项目(并且您可能已经有一个用于该目的的变量)。

无论如何,希望所有这些都会有所帮助 - 如果有任何问题,请告诉我。

关于coldfusion - 高级 cfif 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3425952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com