将元素追加到TCL中的嵌套列表

Lin*_*nus 5 nested list tcl

我想将元素动态添加到嵌套列表中。考虑以下示例:

set super_list {}
lappend super_list {00 01 02}
lappend super_list {10 11 12}
lappend super_list {20 21}
Run Code Online (Sandbox Code Playgroud)

结果是:

super_list = {00 01 02} {10 11 12} {20 21}
[lindex $super_list 0] = {00 01 02}
[lindex $super_list 1] = {10 11 12}
[lindex $super_list 2] = {20 21}
Run Code Online (Sandbox Code Playgroud)

如何在[lindex $ super_list 2]后面附加另一个值(例如22)?

lappend [lindex $super_list 2] 22
Run Code Online (Sandbox Code Playgroud)

不起作用!

到目前为止,我唯一想到的解决方法是:

lset super_list 2 [concat [lindex $super_list 2] {22}]
Run Code Online (Sandbox Code Playgroud)

这真的是唯一的方法吗?

谢谢莱纳斯

Don*_*ows 4

在 Tcl 8.6 中(添加了该功能;它在早期版本中不起作用),您可以lset通过索引来扩展嵌套列表end+1

set super_list {{00 01 02} {10 11 12} {20 21}}
lset super_list 2 end+1 22
puts [lindex $super_list 2]
# ==>  20 21 22
Run Code Online (Sandbox Code Playgroud)

您也可以使用数字索引来解决最后一个问题,但我认为end+1这更容易记忆。