在数组中使用list变量

时间:2015-08-27 18:44:18

标签: tcl

我正在学习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"

我做错了什么?

2 个答案:

答案 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}

并且非常欢欣鼓舞。

通过这种方式,人们可以试验命令结构和引用,直到一个人正确。只是一个提示。