bionic (3) defer.3tcl.gz

Provided by: tcllib_1.19-dfsg-2_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 (c) 2017, Roy Keene