[Zope] Defining variables
Brian Lloyd
Brian@digicool.com
Tue, 13 Jul 1999 17:46:49 -0400
> Currently we have REQUEST.set(). This is nice, but I think there is a
> need for a general-purpose variable namespace that isn't related to
> REQUEST (plus the fact that typing "REQUEST.set(...)" all the
> time isn't
> so cool).
>
> I have one specific case where it's simply arduous having to mix real
> REQUEST variables -- meaning those that come in through the
> query string
> or form data -- with actual request-related variables.
>
> How about adding something like _.set()?
>
> --
> Alexander Staubo
Doesn't the Let tag basically accomplish what you are
asking for? From the Let tag docs:
The let tag:
is a new tag that lets you create blocks like:
<!--#in "1,2,3,4"-->
<!--#let num=sequence-item
index=sequence-index
result="num*index"-->
<!--#var num--> * <!--#var index--> = <!--#var result-->
<!--#/let-->
<!--#/in-->
Which yields:
1 * 0 = 0
2 * 1 = 2
3 * 2 = 6
4 * 3 = 12
The #let tag works like the #with tag, but is more flexible in that
it allows you to make multiple assignments, and allows you to chain
assignments, using earlier declarations in later assignments. Notice
inthe ablove example, the 'result' variable is based on 'num' and
'index', both of which are assigned in the same #let expression.
Syntacticly, each argument to be evalulated in the head of the let
tag must be seperated by a newline. Enclosing an argument in double
quotes causes it to be evaluated by the DTML expression machinery.
Un-quoted arguments are referenced by name.
Evaluation is in sequence with the result of earlier assignments
available to later ones. Later assignments can also override earlier
ones, which can be helpful for longer step-by-step calculations. The
variables thus set are in effect for the life of the <!--#let-->
block.
Brian Lloyd brian@digicool.com
Software Engineer 540.371.6909
Digital Creations http://www.digicool.com