2016-12-29 68 views
2

我還沒有設法瞭解如何將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" 
} 

回答

4

的第一個參數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" 
} 

這很少見。

1

if命令有一個內置的EXPR。具體來說既ifexpr期待和表達作爲第一個參數:

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" 
} 
相關問題