Следующий фрагмент кода является примером того, как использовать хронологический список ключей массива для распечатки содержимого массива по порядку.Затем он используется для создания массива с двумя из каждого элемента.
#!/usr/bin/tclsh
proc add_element {array_name key value} {
upvar $array_name aa
if { ![info exists aa($key)] } {
set aa($key) $value
lappend aa() $key
}
}
add_element names 1 Jane
add_element names 2 Tom
add_element names 3 Elisabeth
add_element names 4 Ted
add_element names 5 Sally
foreach e $names() {
add_element morenames $e $names($e)
add_element morenames $[expr $e + 1 ] $names($e)
}
foreach e $morenames() {
puts $morenames($e)
}
Для решения вашей проблемы вы должны сгенерировать новые массивы для внимания и мощности с двойным элементом, как показано в примере выше.Затем вы должны сгенерировать другие массивы, используя функцию, аналогичную приведенной выше, если только они уже не возвращаются в порядке упорядочения при их повторении.
Затем вы перебираете другие массивы, скажем, newTime, используя нечто подобноек фрагменту ниже:
set rows [array size newTime]
for {set row 1} {$row <= $rows} {incr row} {
$cells Item $row "A" $newatten($row)
$cells Item $row "B" $newpower($row)
$cells Item $row "C" $newbandwidth($row)
$cells Item $row "C" $newTime($row)
}
Следующий фрагмент кода является примером того, как переназначить числовые ключи массива TCL (ассоциативный массив или HashMap).
#!/usr/bin/tclsh
set names(1) Jane
set names(2) Tom
set names(3) Elisabeth
set names(4) Robert
set names(5) Julia
set names(6) Victoria
foreach n [array names names] {
puts $n
puts $names($n)
}
puts "-------------"
foreach n [array names names] {
set newnames([expr $n -1]) $names($n)
}
foreach n [array names newnames] {
puts $n
puts $newnames($n)
}
Это не 'Т достаточно, чтобы делать то, что вы хотите.
Вы должны сделать это, а затем удалить unset
первый элемент и добавить set
последний элемент.
Вы не указали в своем вопросе, каким будет ваш последний элемент.
Если вы используете не числовые ключи, например строковые ключи, то вам придется придать этим ключам некоторую концепцию порядкалибо путем сопоставления их с числовыми ключами, либо с использованием какого-либо другого метода.
Обратите внимание, что массивы TCL не возвращают вещи в порядке в цикле foreach, если вы не указали их.
Списки TCLлучше подходит для этого, как продемонстрировано.
#!/usr/bin/tclsh
set i 0
foreach j "a b c" {
puts "$j is item number $i in list x"
incr i
}
Вы также не указали, в какие структуры данных вы хотите преобразовать или хотите ли вы просто записать ввод на экран (используя puts
) илик файлу.
Например, хотите ли вы сгенерировать любую из следующих структур данных для вашей таблицы?
- массив TCL массивов TCL (Hashmap of Hashmap)
- список списков
- массив списков TCL
- списокTCL Arrays (Список Hashmap)
Для получения дополнительной информации см .: