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

proc some_actor {_cntr} {
  upvar $_cntr cntr
  puts "  iter: $cntr"
  if {[incr cntr] >= 3} {
    return -code break "done"
  }
}

proc some_handler {_cntr} {
  upvar $_cntr cntr
  if {[catch {
    some_actor cntr
  } v o]} {
    # resulting value:
    puts "result: $v"
    # some finaly code:
    puts "finalization"
    # provide return to callee ...
    return {*}$o -level 1 $v
  }
}

proc some_cycle {} {
  set c 0
  while 1 {
    some_handler c
  }
}

some_cycle


==>

  iter: 0
  iter: 1
  iter: 2
result: done
finalization