如何在Tcl中初始化数组?

时间:2010-07-28 04:56:11

标签: arrays tcl

在Tcl中初始化空数组的正确方法是什么?

我有以下代码(简化):

proc parseFile {filename results_array} {
    upvar $results_array results
    set results(key) $value
}

set r1 {}
parseFile "filename" r1

我收到错误:

  

错误:无法设置“结果(键)”:变量不是数组

3 个答案:

答案 0 :(得分:20)

要初始化数组,请使用“数组”。如果你只想创建内部数组对象而不给它任何值,你可以给它一个空列表作为参数。例如:

array set foo {}

如果你想给它一个值,你可以给它一个正确引用的键/值对列表:

array set foo {
    one {this is element 1}
    two {this is element 2}
}

答案 1 :(得分:4)

您没有在Tcl中初始化数组,它们只是在您设置成员时出现:

proc stash {key array_name value} {
    upvar $array_name a
    set a($key) $value
}

stash one pvr 1
stash two pvr 2
array names pvr

的产率:

two one

答案 2 :(得分:0)

set marks(english)80

设置array_name(key)值