【发布时间】:2013-04-24 23:21:03
【问题描述】:
似乎是一个基本问题,但我在任何地方都找不到答案:-S
我对下面的实验感到困惑:
Tcl 8.5.13 interactive shell
% set args [list 1 2 3]
1 2 3
% llength $args
3
% set argv $args
1 2 3
% llength $argv
3
% set argv ${args}
1 2 3
% llength $argv
3
到目前为止一切都很好,但是:
% proc test { args } { set argv ${args}; set argc [llength $argv]; return $argc}
% test $args
1
看起来列表在参数传递期间变成了一个字符串。 有人可以解释这里发生了什么吗??
目前我发现的唯一解决方法是这个:
% proc test2 { argsName } { upvar 1 $argsName args; set argv ${args}; set argc [llength $argv]; return $argc}
% test2 args
3
还有什么建议吗?
【问题讨论】: