我曾经使用过PHP和JavaScript,但现在已经开始在Coldfusion中从事一个项目。
在PHP中,我习惯于一个字符串为“ truthy”,而空值/ null为“ falsy”。
对于ColdFusion(尤其是v8),这似乎并不成立。
我想进行以下工作,但无法弄清楚如何使CF将字符串视为真实:
<cfset x = "path\to\something.cfm">
<cfif x>
x is truthy
<else>
x is falsy
</cfif>
我总是收到错误:
cannot convert the value "path\to\something.cfm" to a boolean
isBoolean()
可以工作,但感觉不够坚固。似乎没有`isString()-但这还是上面的问题
YesNoFormat()
奇怪地给我同样的错误(虽然我应该做的与我本应做的相反) 最佳答案
ColdFusion具有一些类似的“真实性”功能。
以下将评估为真
字符串“ true”或“ yes”(不区分大小写)
任何非零数
值true
以下将评估为false
字符串“ false”或“ no”(不区分大小写)
零
值false
在CF中,我们通常使用len()
函数来确定字符串中是否包含任何内容。由于非零数字的计算结果为“ true”,因此可以使用。
您的伪代码应为:
<cfset x = "path\to\something.cfm">
<cfif len(x)>
x is truthy
<else>
x is falsy
</cfif>
由于ColdFusion将null转换为空字符串,因此结合使用
trim()
是一个好主意,例如:<cfif len(trim(x))>
。没有
isString()
函数,但是有isValid()
:isValid("string",x)
YesNoFormat()
只是将布尔值转换为格式正确的“是”或“否”。