我還沒有設法瞭解如何將expr嵌入到其他構造中。 我可以很容易地鍵入如何在表達式中使用expr?
set i {1 2 3}
expr {[llength $i]} #result is 3
但是長期的研究後,我還沒有設法找到一種方法,把裏面如果
if {"magic tcl code with expr and llength==3 required here"} {
puts "length is 3"
}
我還沒有設法瞭解如何將expr嵌入到其他構造中。 我可以很容易地鍵入如何在表達式中使用expr?
set i {1 2 3}
expr {[llength $i]} #result is 3
但是長期的研究後,我還沒有設法找到一種方法,把裏面如果
if {"magic tcl code with expr and llength==3 required here"} {
puts "length is 3"
}
的第一個參數if
是表達,正如參數expr
是一個表達式。
if {[llength $i] == 3} {
puts "length is 3"
}
你可以把確實使用expr
括號[
]
,就像任何命令的表達式中,但通常沒有理由這樣做;它只是讓一切更加冗長。
if {[ expr {[llength $i]} ] == 3} {
puts "length is 3"
}
上述規則的例外是當你有一個動態的表達式;那麼在表達式內部放置一個expr
是有意義的,因爲它允許外部部分有效地進行字節碼編譯。
# Trivial example to demonstrate
set myexpression {[llength $i]}
if {[expr $myexpression] == 3} {
puts "evaluated $myexpression to get three"
}
這很少見。
的if
命令有一個內置的EXPR。具體來說既if
和expr
期待和表達作爲第一個參數:
if expression ...
expr expression
因此,如果要執行expr {[llength $i]}
然後就去做:
if {[llength $i]} {
}
不過說實話,我不相信你想執行
expr {[llength $i]}
我想你想要的是檢查長度是3,所以你真正想要的是
expr {[llength $i] == 3}
如果是這樣的情況,則if
版本將是:
if {[llength $i] == 3} {
puts "llength is 3"
}