因此,基本上在我的tcl腳本中,我生成了一行必須執行的tcl代碼(即,我在運行時提出了該指令)。一旦我有了tcl指令,例如放入「hello world $ test_var」。我如何使用tcl執行此操作?如何在tcl中使用eval語句
我使用eval命令還是什麼?
因此,基本上在我的tcl腳本中,我生成了一行必須執行的tcl代碼(即,我在運行時提出了該指令)。一旦我有了tcl指令,例如放入「hello world $ test_var」。我如何使用tcl執行此操作?如何在tcl中使用eval語句
我使用eval命令還是什麼?
只怕你沒有其他合理的選擇,而不是使用eval
命令,如:
set variable {puts "hello world $test_var"}
eval $variable
的eval
命令是這樣做的合理的方式,但你可能要考慮使用catch
代替,因爲這將陷阱生成的代碼的評估過程中發現的問題,比如像這樣:
# Generate the code somehow
set variable {puts "hello word $test_var"}
# Execute and trap problems
if {[catch $variable resultMsg]} {
# An error (or other exception) happened
puts stderr "BOOM, Error! $resultMsg"
}
而不是使用[EVAL],它工作得很好,Tcl中可以使用日的較新版本的e {*}語法。 例如:
set cmd "puts"
lappend cmd "abcd ef"
{*}$cmd
注意它的使用列表中的好習慣命令來建立你的命令,這樣你不會遇到引用問題。
爲什麼害怕?什麼是恐懼? – 2011-04-18 09:48:30
在這個例子中,沒有什麼可怕的。但是我已經有了一些情況,在沒有做錯任何事情的情況下處理「eval」是非常困難的。不幸的是,我現在不記得確切的問題。這與正確的引用有關,並且據我所知,它甚至是一個嵌套的'eval'(但最終它的工作是正確的)。 – bmk 2011-04-18 10:05:00