gpt4 book ai didi

list - 是否有与 Perl 的转变等效的 Tcl?

转载 作者:行者123 更新时间:2023-12-01 09:17:24 30 4
gpt4 key购买 nike

在 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
}

我想知道是否有更好的方法。

最佳答案

(正如我在评论中所说)

有一个page about lshift在 tclers 维基。根据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
}

关于list - 是否有与 Perl 的转变等效的 Tcl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40717074/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com