在数组集中使用列表变量
using list variable in array set
我正在学习TCL,发现我可以将数组初始化为(k1,v1 是一组键值)
array set a2 {k1 v1 k2 v2}
然而,当我尝试使用已经存在的列表作为
set var3 "k1 v1 k2 v2"
array set a2{$var3}
或
set var3 [listk1 v1 k2 v2]
array set a2{$var3}
我收到一个错误:
wrong # args: should be 'array set arrayName list"
我做错了什么?
您在数组名称和值之间缺少 space。语法是 "array set name value" 但你称它为 "array set namevalue"
array set a2 $var3
在另一个示例中,您在变量周围加上了方括号,这样可以防止变量被展开。 ${var3}
会像 $var3
一样展开,但 {$var3}
不会。
有时当命令调用出错时,将命令视为列表会有所帮助。通过这种方式,可以大致了解命令准备好执行时的样子。
list array set a2{$var3}
# -> array set {a2{k1 v1 k2 v2}}
嗯,不,这看起来不对。应该是四个字,第三个字看起来很奇怪
如果我在左大括号前加一个 space 怎么样?
list array set a2 {$var3}
# -> array set a2 {$var3}
关闭,但没有雪茄。看起来大括号正在干扰变量替换。如果我删除它们会怎样?
list array set a2 $var3
# -> array set a2 {k1 v1 k2 v2}
大家都很高兴。
通过这种方式,您可以对命令结构和引用进行试验,直到正确为止。只是一个小费。
我正在学习TCL,发现我可以将数组初始化为(k1,v1 是一组键值)
array set a2 {k1 v1 k2 v2}
然而,当我尝试使用已经存在的列表作为
set var3 "k1 v1 k2 v2"
array set a2{$var3}
或
set var3 [listk1 v1 k2 v2]
array set a2{$var3}
我收到一个错误:
wrong # args: should be 'array set arrayName list"
我做错了什么?
您在数组名称和值之间缺少 space。语法是 "array set name value" 但你称它为 "array set namevalue"
array set a2 $var3
在另一个示例中,您在变量周围加上了方括号,这样可以防止变量被展开。 ${var3}
会像 $var3
一样展开,但 {$var3}
不会。
有时当命令调用出错时,将命令视为列表会有所帮助。通过这种方式,可以大致了解命令准备好执行时的样子。
list array set a2{$var3}
# -> array set {a2{k1 v1 k2 v2}}
嗯,不,这看起来不对。应该是四个字,第三个字看起来很奇怪
如果我在左大括号前加一个 space 怎么样?
list array set a2 {$var3}
# -> array set a2 {$var3}
关闭,但没有雪茄。看起来大括号正在干扰变量替换。如果我删除它们会怎样?
list array set a2 $var3
# -> array set a2 {k1 v1 k2 v2}
大家都很高兴。
通过这种方式,您可以对命令结构和引用进行试验,直到正确为止。只是一个小费。