Function 元素不会替换为lreplace命令

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

我发现了一个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 $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]