list – 是否有一个Tcl相当于Perl的转变?
发布时间:2020-12-16 06:06:51 所属栏目:大数据 来源:网络整理
导读:在Perl / Ruby中,可以移动一个数组(类似于Tcl的列表),因此删除数组中的第一个项目并返回它.它的运行时间几乎不变.即,2个元素和200万个元素相同. 有没有类似于Tcl的东西?在某种程度上,它与Tcl的lappend项目相反.我们不是从顶部添加1,而是从底部删除一些东西.
在Perl /
Ruby中,可以移动一个数组(类似于Tcl的列表),因此删除数组中的第一个项目并返回它.它的运行时间几乎不变.即,2个元素和200万个元素相同.
有没有类似于Tcl的东西?在某种程度上,它与Tcl的lappend项目相反.我们不是从顶部添加1,而是从底部删除一些东西. 代码应该如下所示: set k [ list 1 2 3 ] puts [ shift k ] > 1 puts [join $k ","] > 2,3 我当然可以在proc中执行此操作: proc shift {list_name} { upvar $list_name listy set ret [lindex $listy 0] set listy [lrange $listy 1 end ] return $ret } 我想知道是否有更好的方法. 解决方法
(如我的评论所述)
tclers wiki中有一个page about lshift.根据Tcl gems页面,与你的版本相比,lreplace的使用表现更好. proc lshift listVar { upvar 1 $listVar l set r [lindex $l 0] set l [lreplace $l [set l 0] 0] return $r } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |