1
我已经看过Passing list to Tcl procedure,我无法正确理解如何正确执行它。 为了把它在上下文中,这是我如何通过名单:将一个列表传递给一个进程
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”传递它,但它返回一个错误。我的程序中的其他一切都是完美的(如果我从任何一个单独的程序中获取代码并将其自行运行),我似乎无法让它正确地通过列表。
这似乎很好的手续3个工作,但它是有问题与写程序,因为我需要传递两个变量。它是相同的格式? – Peter
我刚刚添加到我的答案 –
@Peter是否有任何程序想要更新列表?如果是这样,还有一个不同的适用习惯用法。 –