New in: 5.2.1 The $let
widget allows multiple variables to be set in one operation. In some situations it can result in simpler code than using the more flexible $set
widget. It differs from the $vars
widget in that variables you're defining may depend on earlier variables defined within the same $let
.
The content of the $let
widget is the scope for the value assigned to the variable.
Attribute | Description |
---|---|
{attributes not starting with $} | Each attribute name specifies a variable name. The attribute value is assigned to the variable |
Attributes are evaluated in the order they are written. Attributes with the same name are allowed. Each time a duplicate attribute is encountered, it will replace the existing value set by the earlier duplicate.
Consider a case where you need to set multiple variables, where some depend on the evaluation of others.
Using the $let
widget, this situation may be handled in the following way:
\define helloworld() Hello world!
<$let target="MyTiddler" currentTiddler={{{ [<target>prefix[$:/settings/for/]] }}} settings={{!!text}} currentTiddler=<<target>> >
The settings for <<currentTiddler>> are: <<settings>>
</$let>
In contrast, here is the same example using the $set
widget:
<$set name="target" value="MyTiddler" >
<$set name="currentTiddler" value={{{ [<target>prefix[$:/settings/for/]] }}} >
<$set name="settings" value={{!!text}} >
<$set name="currentTiddler" value=<<target>> >
The settings for <<currentTiddler>> are: <<settings>>
</$set>
</$set>
</$set>
</$set>
This widget differs from $vars
in the following way:
This widget differs from $set
in the following ways: