破坏性的 TCLunshift
Destructive TCLunshift
假设我有一个列表 {1 2 3 }
。我想取消它。创建一个 { 0 1 2 3 }
的列表,而不创建新列表。这是为了节省复杂性。在 Perl 和 Ruby 中,使用 unshift 是可能的。是否有 TCL 等效产品?
谢谢。
Tcl中没有这样的命令,但你可以很容易地自己制作:
proc lunshift {var args} {
upvar 1 $var list
set list [linsert $list[set list {}] 0 {*}$args]
}
[set list {}]
部分是使列表不共享的技巧,因此不会产生重复。有关详细信息,请参阅 the Tcl wiki。
演示:
set mylist {1 2 3}
lunshift mylist 0
puts $mylist; # Result => 0 1 2 3
假设我有一个列表 {1 2 3 }
。我想取消它。创建一个 { 0 1 2 3 }
的列表,而不创建新列表。这是为了节省复杂性。在 Perl 和 Ruby 中,使用 unshift 是可能的。是否有 TCL 等效产品?
谢谢。
Tcl中没有这样的命令,但你可以很容易地自己制作:
proc lunshift {var args} {
upvar 1 $var list
set list [linsert $list[set list {}] 0 {*}$args]
}
[set list {}]
部分是使列表不共享的技巧,因此不会产生重复。有关详细信息,请参阅 the Tcl wiki。
演示:
set mylist {1 2 3}
lunshift mylist 0
puts $mylist; # Result => 0 1 2 3