tcl/tk参考——列表操作lset

.

.

 

名称

lset - 修改列表中的一个元素

语法

lset varName ?index...? newValue

描述

lset命令接收一个varName参量,varName是一个列表变量。命令可以接收0个或多个index,多个index可 以连续排列,也可以以列表形式出现。最终接收一个新的值作为varName的一个元素。如果没有index,命令形式如下:

lset varName newValue

lset varName {} newValue

在这种情况下,newValue取代变量varName的值。

当只有一个索引,lset命令把varName当作一个列表处理,指出了第index个元素的位置(0指列表的第一 个元素)。当解释列表的时候,lset遵循Tcl命令解释器关于对花括号、引号和反斜杠的处理规则,但是 变量置换和命令置换并不会发生。命令构造一个使用newValue替换元素后的列表。这个新的列表存储在变 量varName中,lset命令也会返回这个新的列表。

如果index是负数或者大于或者等于$varName元素的数目,就发生一个错误。

每个单独的index数值和命令string index相同,支持一个index和多个index

如果有额外的index变元,每个变元指定了子列表中的元素,允许脚本去修改子列表里的元素。命令:

lset a 1 2 newValue

lset a {1 2} newValue

使用newValue替代第一个子列表中的第二个元素。

作为index变元必须是大于或者等于0的整数,而且必须小于相应的列表的长度,也就是说lset命令不能修改列表的大小,如果不符合上述要求则会报错。

示例

在以下的每个示例中,初始值x的值为:

set x [list [list a b c] [list d e f] [list g h i]]
       {a b c} {d e f} {g h i}

命令返回结果并且会修改x的值,如果出错则不修改x的值。

lset x {j k l}
       j k l
lset x {} {j k l}
       j k l
lset x 0 j
       j {d e f} {g h i}
lset x 2 j
       {a b c} {d e f} j
lset x end j
       {a b c} {d e f} j
lset x end-1 j
       {a b c} j {g h i}
lset x 2 1 j
       {a b c} {d e f} {g j i}
lset x {2 1} j
       {a b c} {d e f} {g j i}
lset x {2 3} j
       list index out of range

在以下的每个示例中,初始值x的值为:

set x [list [list [list a b] [list c d]] /
            [list [list e f] [list g h]]]
       {{a b} {c d}} {{e f} {g h}}

命令返回结果并且会修改x的值,如果出错则不修改x的值。

lset x 1 1 0 j
       {{a b} {c d}} {{e f} {j h}}
lset x {1 1 0} j
       {{a b} {c d}} {{e f} {j h}}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值