Posted to tcl by sebres at Thu Jul 05 16:07:23 GMT 2018view raw

  1. proc some_actor {_cntr} {
  2. upvar $_cntr cntr
  3. puts " iter: $cntr"
  4. if {[incr cntr] >= 3} {
  5. return -code break "done"
  6. }
  7. }
  8.  
  9. proc some_handler {_cntr} {
  10. upvar $_cntr cntr
  11. if {[catch {
  12. some_actor cntr
  13. } v o]} {
  14. # resulting value:
  15. puts "result: $v"
  16. # some finaly code:
  17. puts "finalization"
  18. # provide return to callee ...
  19. return {*}$o -level 1 $v
  20. }
  21. }
  22.  
  23. proc some_cycle {} {
  24. set c 0
  25. while 1 {
  26. some_handler c
  27. }
  28. }
  29.  
  30. some_cycle
  31.  
  32.  
  33. ==>
  34.  
  35. iter: 0
  36. iter: 1
  37. iter: 2
  38. result: done
  39. finalization