我在列表中有一些字符串,我想迭代,直到我按下Esc按钮。
set list {{black board} {chalk} {duster}}
foreach list1 $list {
我想通过按下按钮" K"逐个迭代列表。按Esc后,它应退出foreach
循环。
是否可以在TCL中写这个?
答案 0 :(得分:0)
以下是结合Glenn建议并在UNIX上运行的示例:
proc enableRaw {{channel stdin}} {
exec /bin/stty raw -echo <@$channel
}
proc disableRaw {{channel stdin}} {
exec /bin/stty -raw echo <@$channel
}
set l [list a b c d]
enableRaw
foreach el $l {
puts "$el"
set c 0
while {$c != 107 && $c != 27} {
set c [scan [read stdin 1] %c]
}
if {$c == 27} { break }
}
disableRaw
如果程序中有错误,或者用户按下CTRL-C,它们将停留在原始模式;因此,您可能希望在程序中添加一个调用disableRaw的退出处理程序。