TCL 三元运算符不喜欢空字符串

TCL ternary operator does not like empty string

简单的问题,TCL给我"premature end of expression"因为三元表达式的最后一个参数是一个空字符串。如果是其他任何东西,那么它就可以正常工作。我可以在这里使用空字符串吗?

set y 5
set x [expr ($y > 1) ? 1 : ""]

你应该总是给 expr 一个单独的、完整的表达式,用大括号括起来作为参数。这避免了一大堆问题,包括这个问题。

expr {$y > 1 ? 1 : ""}

问题是 expr 连接其参数以获得表达式。调用 concat $y > 1 ? 1 : "" 给出字符串“5 > 1 ? 1 :”,expr.

无法解析该字符串