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。
有人能告诉我为什么不能在数学函数中使用三元运算符吗?
这是一个例子:
<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。