【发布时间】:2016-10-08 09:42:30
【问题描述】:
请参阅下面的 Tcl shell 代码和结果:
% foreach a { 1 2 3 4 5 } { puts $a }
1
2
3
4
5
% puts $a
5
看起来变量 a 留在内存中......例如在 Perl 中可以使用:
foreach my $a
并且 $a 仅在循环期间存在。在 Ruby 中,可以使用闭包:
[1,2,3,4,5].each{|a| puts a.to_s() }
为了达到同样的目的。
在 Tcl 中是否有一种优雅的方法?
谢谢
【问题讨论】:
-
到目前为止,还没有内置机制。您可以在
foreach循环之后显式使用unset命令来实现相同的目的。 -
是的,这就是我现在使用的(杂乱最小化)。
-
或者,您可以使用
rename覆盖foreach命令的行为,并为您执行unset操作。
标签: variables for-loop scope closures tcl