如何在Tcl中清空列表?
如何有效地清空Tcl中的列表 我已尝试使用lreplace清空列表,例如:如何在Tcl中清空列表?,tcl,Tcl,如何有效地清空Tcl中的列表 我已尝试使用lreplace清空列表,例如: set lst "a b c d e" lreplace $lst 0 [[llength $lst] - 1] # replace all content in the list with "". 怎么样:set lst[list] 参考资料:空字符串是一个有效的值 set lst {} 您可以使用不带参数的[list]而不是{};编译成相同的东西。注意 % lreplace $lst 0 [[llength
set lst "a b c d e"
lreplace $lst 0 [[llength $lst] - 1] # replace all content in the list with "".
怎么样:
set lst[list]
参考资料:空字符串是一个有效的值
set lst {}
您可以使用不带参数的[list]
而不是{}
;编译成相同的东西。注意
% lreplace $lst 0 [[llength $lst] - 1]
invalid command name "5"
将不起作用(它尝试执行命令替换5-1
,如果找不到任何名为5
的命令,该操作将失败)
这是更近的一步:
% lreplace $lst 0 end
但是仍然失败,因为它只生成列表中项目的值,其中从0
到end
的项目被替换为零。变量lst
的内容不会更改
你就是这样做的*
% set lst [lreplace $lst 0 end]
通过将lreplace
的结果分配回变量lst
,可以使替换在变量值中生效
*)事实上你不是这样做的,因为这太过分了。lreplace$lst 0 end
的值等于空字符串,因此只需指定:
% set lst {}
文件:
,
Tcl索引表达式的语法:
- 基于零的整数索引数
最后一个元素end
-N最后一个元素之前的第N个元素end
+N最后一个元素后的第N个元素(实际上,N应该是负数)end
- M-N元素M之前的第N个元素
- M+N元素M之后的第N个元素
表达式中不能有空格。如果您不再需要变量,
unset lst
IMHO这是一种惯用的方法,我在谷歌上搜索了“如何在tcl中清空列表”,但无法真正找到这个简单问题的解决方案。我想tcl就是那么不受欢迎。谢谢你的回答!谢谢你的回答!很抱歉,我没有真正运行“llreplace”命令,我只是想让pass stackoverflow提交一个非常简单的问题“如何有效地清空tcl中的列表”。