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

Что надлежащий путь состоит в том, чтобы инициализировать пустой массив в Tcl?

Мне (упростили) следующий код:

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

set r1 {}
parseFile "filename" r1

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

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

7
задан Amir Rachum 28 July 2010 в 04:56
поделиться

2 ответа

Вы не инициализируете массивы в 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
4
ответ дан 6 December 2019 в 06:48
поделиться

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

array set foo {}

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

array set foo {
    one {this is element 1}
    two {this is element 2}
}
22
ответ дан 6 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: