如何通过按 Tcl 中的 Esc 键退出 foreach 循环



我在列表中有一些字符串,我想迭代这些字符串,直到我按下 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 的程序添加一个退出处理程序。

最新更新