我正在学习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}
我收到错误:
错误#args:应该是'数组设置arrayName list"
我做错了什么?
答案 0 :(得分:4)
您在数组名称和值之间缺少空格。语法是"数组集名称值"但你称之为"数组设置名称值"
$('#cat_icon,.panel_title').click(function () {
if($('#cat_icon').is(':visible')){
$('#cat_icon').fadeOut(function () {
$('#categories').toggle('slide', {
direction: 'right'
}, 1000);
});
}
else{
$('#categories').toggle('slide', {
direction: 'right'
}, 1000, function(){ $('#cat_icon').fadeIn();});
}
});
在另一个示例中,您在变量周围添加了括号,这将阻止变量展开。 array set a2 $var3
将与${var3}
展开相同,但$var3
则不会。
答案 1 :(得分:2)
有时,当命令调用出错时,有助于将该命令视为列表。通过这种方式,可以看到命令在准备好执行时的外观。
list array set a2{$var3}
# -> array set {a2{k1 v1 k2 v2}}
嗯,不,那看起来不对。应该是四个单词,第三个单词看起来很奇怪。
如果我在左支撑前放置一个空格怎么样?
list array set a2 {$var3}
# -> array set a2 {$var3}
关闭,但没有雪茄。看起来大括号正在干扰变量替换。如果我删除它会怎么样?
list array set a2 $var3
# -> array set a2 {k1 v1 k2 v2}
并且非常欢欣鼓舞。
通过这种方式,人们可以试验命令结构和引用,直到一个人正确。只是一个提示。