logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

defer - Defered execution

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 TcllibTrackers [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 unifieddiffs, 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.

Category

       Utility

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::withvariableListscript
              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::autowithscript
              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.

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.

Examples

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

Keywords

       cleanup, golang

Name

       defer - Defered execution

References

       [1]

Synopsis

       package require Tcl8.69

       package require defer?1.1?::defer::defer ?command? ?arg1? ?arg2? ?argN...?

       ::defer::withvariableListscript::defer::autowithscript::defer::cancel ?id...?

________________________________________________________________________________________________________________

See Also