我正在重新定义 Tcl 的set
命令以允许同时进行多个分配。但是,一旦我尝试使用变量,它就会报告“未定义变量”错误。这是我迄今为止尝试过的两种方法:
proc set args {
uplevel foreach {*}$args break
}
proc set {l1 l2} {
uplevel foreach $l1 $l2 break
}
我执行了llength
on $args
,它确实报告了两个元素的列表。我对这种行为很困惑。
我这样称呼它:
set {a b c d} {e f g h}
set {a s d f} {q w e r t y}
*编辑:
又做了一些修改。我找到了一种让它工作的方法(在大多数情况下,因为额外的值被默默地丢弃,但这与原来的问题无关),但我仍然很困惑为什么这种方法有效,但其他方法却没有:
proc set {l L} {
uplevel foreach [list $l] [list $L] break
}