Function 元素不会替换为lreplace命令
我发现了一个Tcl语言的练习: 编写一个过程,返回调用方可见的所有非过程命令。 因此,在几次尝试之后,我以以下代码结束:Function 元素不会替换为lreplace命令,function,tcl,Function,Tcl,我发现了一个Tcl语言的练习: 编写一个过程,返回调用方可见的所有非过程命令。 因此,在几次尝试之后,我以以下代码结束: proc aaaaaaaaaa {} { set var 1} ; # name is not important proc only_commands {} { set rawList [info commands] set procList [info proc] foreach a $procList { set pos [lsearch $rawList
proc aaaaaaaaaa {} { set var 1} ; # name is not important
proc only_commands {} {
set rawList [info commands]
set procList [info proc]
foreach a $procList {
set pos [lsearch $rawList $a]
lreplace $rawList $pos $pos
}
return $rawList
}
puts [ only_commands ]
在这段代码中,我得到了两个列表:一个是command(包括过程),另一个是only过程。
现在我使用foreach循环来获取元素在
命令的列表,并将其替换为空。最后我还了名单
但是,当我打印列表时,我还看到了“aaaaaaaaaa”过程
为什么lreplace似乎不起作用?
有人能解释一下问题出在哪里吗
lreplace $rawList $pos $pos
从(增加强调)开始:
lreplace
返回通过替换
你不能对它返回的新列表做任何事情。试着把那行改成
set rawList [lreplace $rawList $pos $pos]
你能告诉我们到目前为止你做了什么吗?这是一个练习,因为现在我没有写任何东西,更不用说练习了。你试过什么,你觉得怎么样,等等?练习应该是测试你对某个主题的理解,或者推动你自己做一些研究。你到底在哪里找到这个练习的?你缺少
info procs
。看见
set rawList [lreplace $rawList $pos $pos]