我的TCL语言脚本存在两个问题。 第一: 我创建了从图表中下载值的列表,但我不知道如何在列表中移动元素,例如:
set list [2,3,4,5,6] # my list
我想要这个效果 - >
[1,2,3,4,5] next -> [0,1,2,3,4] etc.
第二: 如何为10个元素创建固定大小的列表?我想要列表中的10个元素,当我得到> 10个元素我想删除最后一个元素并添加new作为第一个元素(第一个问题)
谢谢并抱歉我的英语不好:)
答案 0 :(得分:2)
在列表的第一个位置添加新项目,同时将列表限制为给定大小:
set size 5
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
set list [lrange [linsert $list 0 1] 0 $size-1]
# => 1 2 3 4 5
set list [lrange [linsert $list 0 0] 0 $size-1]
# => 0 1 2 3 4
您可以使用以下过程简化此操作:
proc move {varName new} {
upvar 1 $varName list
set size 5
set list [lrange [linsert $list 0 $new] 0 $size-1]
}
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
move list 1
# => 1 2 3 4 5
move list 0
# => 0 1 2 3 4
文档: linsert, list, lrange, proc, set, upvar
Tcl索引表达式的语法:
end
最后一个元素end
-N 最后一个元素之前的 n 元素end
+ N 最后一个元素之后的 n 元素(实际上, N 应为负数)表达式中不能有空格。