Provided by: tcllib_1.21+dfsg-1_all bug

NAME

       defer - Defered execution

SYNOPSIS

       package require Tcl  8.6

       package require defer  ?1?

       ::defer::defer ?command? ?arg1? ?arg2? ?argN...?

       ::defer::with variableList script

       ::defer::autowith script

       ::defer::cancel ?id...?

_________________________________________________________________________________________________

DESCRIPTION

       The  defer commands allow a developer to schedule actions to happen as part of the current
       variable scope terminating.  This is most useful  for  dealing  with  cleanup  activities.
       Since  the  defered  actions  always execute, and always execute in the reverse order from
       which the defer statements themselves execute, the programmer can schedule the cleanup  of
       a  resource (for example, a channel) as soon as that resource is acquired.  Then, later if
       the procedure or lambda ends, either due to an error, or an explicit return,  the  cleanup
       of that resource will always occur.

COMMANDS

       ::defer::defer ?command? ?arg1? ?arg2? ?argN...?
              Defers execution of some code until the current variable scope ends.  Each argument
              is concatencated together to form the script to execute at deferal time.   Multiple
              defer statements may be used, they are executed in the order of last-in, first-out.
              The return value is an identifier which can be used later with defer::cancel

       ::defer::with variableList script
              Defers execution of a script while copying the current  value  of  some  variables,
              whose  names  specified  in  variableList, into the script.  The script acts like a
              lambda but executes at the same level as the defer::with call.  The return value is
              the same as ::defer::defer

       ::defer::autowith script
              The same as ::defer::with but uses all local variables in the variable list.

       ::defer::cancel ?id...?
              Cancels  the  execution  of  a  defered  action.  The id argument is the identifier
              returned by ::defer::defer, ::defer::with, or  ::defer::autowith.   Any  number  of
              arguments may be supplied, and all of the IDs supplied will be cancelled.

EXAMPLES

                package require defer 1
                apply {{} {
                   set fd [open /dev/null]
                   defer::defer close $fd
                }}

REFERENCES

       [1]

AUTHORS

       Roy Keene

BUGS, IDEAS, FEEDBACK

       This  document,  and  the  package  it  describes, will undoubtedly contain bugs and other
       problems.   Please  report  such  in  the  category   defer   of   the   Tcllib   Trackers
       [http://core.tcl.tk/tcllib/reportlist].  Please also report any ideas for enhancements you
       may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments can
       be  made  by going to the Edit form of the ticket immediately after its creation, and then
       using the left-most button in the secondary navigation bar.

KEYWORDS

       cleanup, golang

CATEGORY

       Utility

COPYRIGHT

       Copyright (c) 2017, Roy Keene