Я уже смотрел список передачи в процедуру Tcl, и я не мог понять, как сделать это правильно. Чтобы выразить это в контексте, вот как я передаю список:
switch $choice {
n {
set ptable [new_partition {$ptable}]
}
d {
set ptable [delete_partition {$ptable}]
}
p {
set ptable [print_table {$ptable}]
}
w {
set ptable [write_table {$ptable $fn}]
puts "Saving file...\nExiting..."
break
}
q {
puts "Exiting..."
break
}
default {
puts "Illegal option"
}
}
Это пример одной из процедур
proc print_table {ptable} {
# Set format string
set formatStr {%-16s%-8s%-8s%-8s%-8s%-8s}
# Print the contents of ptable to stdout
puts [format $formatStr "\nPartition" "Start" "End" "Blocks" "ID" "System"]
puts "--------------------------------------------------------"
foreach item $ptable {
set parts [lindex $item 0]
set sCyl [lindex $item 1]
set eCyl [lindex $item 2]
set blok [lindex $item 3]
set id [lindex $item 4]
set sys [lindex $item 5]
puts [format $formatStr $parts $sCyl $eCyl $blok $id $sys]
}
return $ptable
}
Ptable создается правильно, но теряет всю информацию, как только я передаю ее одной из процедур. Я пробовал передать его с помощью "{*} $ ptable", но он возвращает ошибку. Все остальное в моей программе работает отлично (если я возьму код из любой отдельной процедуры и поставлю его отдельно, все работает), я просто не могу заставить его правильно передать список.