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