我在列表中有一些字符串,我想迭代这些字符串,直到我按下 Esc 按钮。
set list {{black board} {chalk} {duster}}
foreach list1 $list {
我想通过按按钮"K"逐个迭代列表。一旦我按 Esc,它应该退出foreach
循环。
是否可以在TCL中编写此内容?
下面是一个结合了 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 的程序添加一个退出处理程序。