我曾经使用过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()只是将布尔值转换为格式正确的“是”或“否”。

10-07 19:16
查看更多