如何在Tcl中按Esc键退出foreach循环

时间:2016-03-05 11:24:18

标签: tcl

我在列表中有一些字符串,我想迭代,直到我按下Esc按钮。

set list {{black board} {chalk} {duster}}
foreach list1 $list {

我想通过按下按钮" K"逐个迭代列表。按Esc后,它应退出foreach循环。

是否可以在TCL中写这个?

1 个答案:

答案 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的退出处理程序。