2
简单的问题,TCL给了我“过早结束表达式”,因为三元表达式的最后一个参数是一个空字符串。如果它是其他的东西,那么它工作正常。我可以在这里使用空字符串吗?TCL三元运算符不喜欢空字符串
set y 5
set x [expr ($y > 1) ? 1 : ""]
简单的问题,TCL给了我“过早结束表达式”,因为三元表达式的最后一个参数是一个空字符串。如果它是其他的东西,那么它工作正常。我可以在这里使用空字符串吗?TCL三元运算符不喜欢空字符串
set y 5
set x [expr ($y > 1) ? 1 : ""]
你应该总是给expr
一个单一的,完整的表达式,用大括号括起来作为参数。这可以避免包括这一个问题在内的一系列问题。
expr {$y > 1 ? 1 : ""}
的问题是,expr
会将其参数得到表达。调用concat $y > 1 ? 1 : ""
给出字符串“5> 1?1:”,这不能被expr
解析。
我永远不会理解TCL,但那是行得通的:-) – MikeKulls
@MikeKulls:永远不要说永远。 Tcl很难习惯,因为它不会像其他语言那样聪明。有一些硬性规则和快速规则,并且它们总是适用。一旦你学会明确表达自己的意思,你就会与Tcl相处得很好,而且你会发现用其他语言设计程序也更容易。 –
我不得不说我觉得很困惑。例如,今天这个代码对我来说是失败的'如果{$ x eq Tx} {doSomething}'。其他字符串不需要引用,文档甚至说不使用引号。 – MikeKulls