lazyset(3)



lazyset(3tcl)      Lazy evaluation for variables and arrays      lazyset(3tcl)

______________________________________________________________________________

NAME
       lazyset - Lazy evaluation

SYNOPSIS
       package require Tcl  8.5

       package require lazyset  ?1?

       ::lazyset::variable ?-array boolean? ?-appendArgs boolean? variableName
       commandPrefix

______________________________________________________________________________

DESCRIPTION
       The lazyset package provides a mechanism  for  deferring  execution  of
       code until a specific variable or any index of an array is referenced.

COMMANDS
       ::lazyset::variable ?-array boolean? ?-appendArgs boolean? variableName
       commandPrefix
              Arrange for the code specified as commandPrefix to  be  executed
              when  the  variable  whose  name is specified by variableName is
              read for the first time.  If the optional argument -array  bool-
              ean  is  specified as true, then the variable specified as vari-
              ableName is treated as an array and attempting to read any index
              of the array causes that index to be set by the commandPrefix as
              they are read.  If the optional argument -appendArgs boolean  is
              specified  as false, then the variable name and subnames are not
              appended to the commandPrefix before it is  evaluated.   If  the
              argument -appendArgs boolean is not specified or is specified as
              true then 1 or 2 additional arguments are appended to  the  com-
              mandPrefix.   If -array boolean is specified as true, then 2 ar-
              guments are appended corresponding to the name of  the  variable
              and  the  index, otherwise 1 argument is appended containing the
              name of variable.  The commandPrefix code is  run  in  the  same
              scope as the variable is read.

EXAMPLES
                ::lazyset::variable page {apply {{name} {
                   package require http
                   set token [http::geturl http://www.tcl.tk/]
                   set data [http::data $token]
                   return $data
                }}}

                puts $page

                ::lazyset::variable -array true page {apply {{name index} {
                   package require http
                   set token [http::geturl $index]
                   set data [http::data $token]
                   return $data
                }}}

                puts $page(http://www.tcl.tk/)

                ::lazyset::variable -appendArgs false simple {
                   return -level 0 42
                }

                puts $simple

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 utility 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.

CATEGORY
       Utility

COPYRIGHT
       Copyright (c) 2018 Roy Keene

tcllib                                 1                         lazyset(3tcl)

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