在Perl/Ruby中,可以移動一個數組(類似於Tcl的列表),因此移除數組中的第一個項目並返回它。它的運行時間幾乎不變。即,對於2個元素和200萬個元素也是如此。 有沒有類似於Tcl的東西?在某種程度上,它與Tcl的lappend項目相反。我們不是在頂部添加1,而是從底部移除某些東西。 的代碼應該是這樣的:有沒有一個Tcl相當於Perl的轉變?
set k [ list 1 2 3 ]
puts [ shift k ]
> 1
puts [join $k ","]
> 2,3
我可以在一個進程做到這一點,當然是:
proc shift {list_name} {
upvar $list_name listy
set ret [lindex $listy 0]
set listy [lrange $listy 1 end ]
return $ret
}
我不知道是否有更好的方法。
有一個[頁碼大約LSHIFT(http://wiki.tcl.tk/8177)在tclers維基。根據[Tcl gems page](http://wiki.tcl.tk/918),與你的版本相比,使用'lreplace'的表現更好。 – b2vincent
謝謝。這是我最需要的東西。 – user1134991
查看元堆棧溢出後,因爲您發現這是您所需要的最接近的,並且儘管有其他高質量的答案,我將我的評論轉換爲答案。 – b2vincent