我想傳遞一個proc變量名稱,並在proc中使用它 。防止在程序中引用?
的問題是,經過論證到PROC變量轉換爲它的價值:
set my_value [ list eee ttt yyy ]
proc my_proc { args } {
puts "MY ARGS IS :$args\n"
}
my_proc $my_value
MY ARGS IS :{eee ttt yyy}
我想獲得:
MY ARGS IS : my_value
感謝 烏里
我想傳遞一個proc變量名稱,並在proc中使用它 。防止在程序中引用?
的問題是,經過論證到PROC變量轉換爲它的價值:
set my_value [ list eee ttt yyy ]
proc my_proc { args } {
puts "MY ARGS IS :$args\n"
}
my_proc $my_value
MY ARGS IS :{eee ttt yyy}
我想獲得:
MY ARGS IS : my_value
感謝 烏里
你想得太多硬。如果你想my_value
要傳遞的,這也正是你要做的:
my_proc my_value
Tcl是在這方面非常簡單:如果你想要的名稱,使用的名稱,如果你想要的值,把$
在名字前面。
Tcl是嚴格通按值語義(它的實現是通過逐不變引用),但是你通過可以是一個名字值(只是不要把$
在前面的,因爲對Tcl來說總是的意思是「現在從這個變量讀取」)。特別是,你會做這樣的:
my_proc my_value
如果你想這個名字綁定到一個局部變量,因此您可以讀取和寫入它,你會那麼做這樣的事情(在過程中):
proc my_proc { args } {
upvar 1 [lindex $args 0] theVar
puts "MY ARGS IS :$args"
puts "THE VARIABLE CONTAINS <$theVar>"
}
感謝您的回答。 – user3540913
也許我應該重新思考這個方法。 我傳遞給proc要麼變量或cmd。我想 打印其內容時,用於可變帶放爲一個cmd與EVAL 設置VAR_GLOBAL [列表AA BB CC DD] 組cmd_global 「llength {1 2 3 4 5}」 MY_PROC $ VAR_GLOBAL MY_PROC $ cmd_global 的PROC要區分對待的2種類型的參數的個數: PROC MY_PROC {ARGS} { 如果{its_a_variablel} { 提出 「變種是:$抹布」 }其他{ \t的foreach ITR [EVAL $ cmd_global] {放「CMD結果:$ itr」} } } 想要的o utput: my_proc $ var_global > VAR IS:AA BB CC DD my_proc $ cmd_global > CMD結果:5 – user3540913