defer(3)



defer(3tcl)                Defered execution ala Go                defer(3tcl)

______________________________________________________________________________

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  ac-
       quired.   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 out-
       put 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

tcllib                                 1                           defer(3tcl)

Man(1) output converted with man2html
list of all man pages