如何替换TCL子列表

时间:2014-07-29 21:43:58

标签: list replace tcl

Tcl中有一个列表清单。

set somelist {{aaa 1} {bbb 2} {ccc 1}}

如何替换第一个列表的元素,以便新列表看起来像我一样:

set somelist {{xxx 1} {bbb 2} {ccc 1}}

我尝试使用lreplace执行此操作,但它无法正常工作。

lreplace somelist 0 1 {xxx 1}

感谢。

1 个答案:

答案 0 :(得分:2)

lreplace命令将列表值作为第一个参数,而不是变量名,所以你可以这样做

set somelist {{aaa 1} {bbb 2} {ccc 1}}
set somelist [lreplace $somelist 0 0 {xxx 1}]

或者,使用lset,这是专门针对这种情况的:

set somelist {{aaa 1} {bbb 2} {ccc 1}}
lset somelist 0 {xxx 1}

使用lset,您可以轻松钻取到子列表。例如,要将{bbb 2}更改为{bbb 42},您可以执行

lset somelist {1 end} 42