Как инициализировать массив в Tcl? - PullRequest
7 голосов
/ 28 июля 2010

Как правильно инициализировать пустой массив в Tcl?

У меня есть следующий код (упрощенно):

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

set r1 {}
parseFile "filename" r1

, и я получаю ошибку:

Ошибка: невозможно установить «результаты (ключ)»: переменная не является массивом

Ответы [ 3 ]

20 голосов
/ 28 июля 2010

Чтобы инициализировать массив, используйте «набор массивов».Если вы хотите просто создать объект внутреннего массива, не задавая ему значений, вы можете дать ему пустой список в качестве аргумента.Например:

array set foo {}

Если вы хотите дать ему значения, вы можете дать ему правильно цитируемый список пар ключ / значение:

array set foo {
    one {this is element 1}
    two {this is element 2}
}
4 голосов
/ 28 июля 2010

Вы не инициализируете массивы в 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
0 голосов
/ 22 октября 2017

набор знаков (английский) 80

установить значение массива_имя (ключ)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...