【发布时间】:2016-07-01 14:12:41
【问题描述】:
所以我注意到 ColdFusion 针对条件 '00' == '.0' 返回 true。
这可以在 CF 9.1 和 CF 10 中重现。
我可以通过添加find('.', foo) 条件轻松解决此问题,但这不正常。
这样的事情让我怀疑 ColdFusion。这让我想知道为什么它在这种明显错误的条件下返回 true,以及它认为其他哪些值是相等的?
是否存在您无法在 Coldfusion 中比较的值列表?或者更好的是,是否有防止这种不匹配的可靠解决方案?
【问题讨论】:
-
你在开玩笑吗?
'0.25' == '6A'。为什么?因为 Coldfusion 认为 0.25 是一天的一刻钟,早上 6 点也是如此。我认为这里有一个大的WTF。 -
试一试
writeDump(compare(".0", "00")==0);CF 试图变得聪明并投射价值观,但它往往做得很糟糕。 compare 函数测试两个字符串的相等性。 -
我不久前将其作为错误提交,他们已将其验证为错误。尽管他们这样做(模棱两可的类型表达式和字符串),但实际上记录在案 - help.adobe.com/en_US/ColdFusion/9.0/Developing/…
-
这肯定违反了最小惊讶原则。 programmers.stackexchange.com/questions/187457/…
-
这是使用相对无类型语言的缺点之一。 CF 以其有时 .. 离奇或 过于慷慨 的解释而闻名。因此,如果您特别需要 string 比较,则等于运算符不是正确的选择。如前所述,要执行字符串比较,请使用为此设计的函数:即
compare()。