Что надлежащий путь состоит в том, чтобы инициализировать пустой массив в Tcl?
Мне (упростили) следующий код:
proc parseFile {filename results_array} {
upvar $results_array results
set results(key) $value
}
set r1 {}
parseFile "filename" r1
и я получаю ошибку:
Ошибка: не может установить "результаты (ключ)": переменная не является массивом
Вы не инициализируете массивы в 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
Чтобы инициализировать массив, используйте "array set". Если вы хотите просто создать внутренний объект массива, не задавая ему никаких значений, вы можете передать ему в качестве аргумента пустой список. Например:
array set foo {}
Если вы хотите дать ему значения, вы можете дать ему правильно процитированный список пар ключ/значение:
array set foo {
one {this is element 1}
two {this is element 2}
}