tcl如何安装u盘上的软件([ Tcl ] 如何实现类似 Perl 中 shift 函数的效果)
导读:https://www.cnblogs.com/yeungchie/...
https://www.cnblogs.com/yeungchie/
函数功能
Perl 中 shift 函数可以返回列表的第一个元素 ,并将后续所有元素向前移位( 索引值减 1 ) 。输入可选 ,默认为 @_ 或者 @ARGV 。
my @foo = qw( 1 2 3 4 ); say shift @foo; # 1 say @foo; # 234在某些版本的 Tcl 中函数 lshift 可以实现类似效果 ,或者使用 struct::list 包:
package require struct::list set foo { 1 2 3 4 } puts [::struct::list shift foo] # 1 puts $foo # 2 3 4但某些 EDA 工具中内置的 Tcl 版本较旧 ,或者做了精简 ,无法使用上面提到的方法 ,所以下面自己来实现一下 。
Tcl 实现
proc shift { sym } { upvar 1 $sym foo if { ! [info exists foo] } { error "cant read \"$sym\": no such variable" } set foo [lassign $foo[unset foo] var0] return $var0 }测试
列表迭代
set a {3 1 2 5 4} # 3 1 2 5 4 shift a # 3 shift a # 1 puts $a # 2 5 4循环中应用
set a {1 2 {} 4 {}} # 1 2 {} 4 {} while { [llength $a] } { puts [shift a] } # 1 # 2 # # 4 #创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!