CFML 数学函数中的三元运算符

CFML Ternary operator in mathematical function

有人能告诉我为什么不能在数学函数中使用三元运算符吗?

这是一个例子:

<cfset test = 1>
<cfdump var="#structKeyExists(Variables, 'test') ? 1 : 0 + 20#">

我希望这个结果是 21,但结果实际上是 1

我在 CF10 上发现了这个,当我在 Railo 上测试它时,结果是一样的,所以我想知道:这是一个错误还是有一个 原因 我'我不应该在此上下文中使用三元运算符?

你的三进制错误语句并没有在 0 处结束,它在代码行的末尾处结束。当检查为假时,三元将 return 声明 : 的右侧,在您的示例中 0 + 20

正如初学者所建议的那样,使用括号可以让您更早地结束三元运算,并继续操作结果。 <cfdump var="#(structKeyExists(Variables, 'test') ? 1 : 0) + 20#"> 会给你预期的 21 或 20。