mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 03:57:21 +00:00
d99b1897c3
* Factored out variable invocation tiddlers into separate tiddlers * Document the variable attribute value behavior more completely --------- Co-authored-by: btheado <btheado@mailinator.com>
111 lines
3.4 KiB
Plaintext
111 lines
3.4 KiB
Plaintext
created: 20230421020225031
|
|
modified: 20230726145912019
|
|
tags:
|
|
title: Variable Usage
|
|
type: text/vnd.tiddlywiki
|
|
|
|
!Ways to define variables and parameters
|
|
|! how declared|! how parameters are defined|! accessing parameter values in the body|
|
|
|\define|`()`|`$param$, <<__param__>>`|
|
|
|~|<<.wlink ParametersWidget>> or `\parameters`|`<<param>>`|
|
|
|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>|<<.wlink ParametersWidget>> or `\parameters`|`<<param>>`|
|
|
|\procedure, \widget|`()`, <<.wlink ParametersWidget>> or `\parameters`|`<<param>>`|
|
|
|\function|`()`|`<param>`|
|
|
|javascript macros|`exports.params` javascript property array|passed as normal javascript function parameter and so accessed as a normal javascript variable|
|
|
|
|
!!Examples
|
|
These examples are meant to provide insight into the various ways of defining and using parameters. In many cases they do not illustrate best practices.
|
|
|
|
!!! \define
|
|
|
|
<$let eg='\define mp1(a1) $a1$ - <<__a1__>>
|
|
|
|
\define mp2() <$parameters a1><<a1>></$parameters>
|
|
|
|
\define mp3()
|
|
\parameters(a1)
|
|
<<a1>>
|
|
\end
|
|
|
|
|<<mp1 foo>>|<<mp2 foo>>|<<mp3 foo>>|
|
|
'>
|
|
<$macrocall $name="copy-to-clipboard-above-right" src=<<eg>>/>
|
|
<$codeblock code=<<eg>>/>
|
|
</$let>
|
|
|
|
!!! $set, $let, $vars
|
|
|
|
<$let eg='<$set name="sp1" value="<$parameters a1><<a1>></$parameters>">
|
|
<$set name="sp2" value="""
|
|
\parameters(a1)
|
|
<$parameters a1><<a1>></$parameters>
|
|
""">
|
|
<$vars vp1="<$parameters a1><<a1>></$parameters>" vp2="""
|
|
\parameters(a1)
|
|
<$parameters a1><<a1>></$parameters>
|
|
""">
|
|
<$let lp1="<$parameters a1><<a1>></$parameters>" lp2="""
|
|
\parameters(a1)
|
|
<$parameters a1><<a1>></$parameters>
|
|
""">
|
|
|
|
|<<sp1 foo>>|<<sp2 foo>>|
|
|
|<<vp1 foo>>|<<vp2 foo>>|
|
|
|<<lp1 foo>>|<<lp2 foo>>|
|
|
</$let>
|
|
</$vars>
|
|
</$set>
|
|
</$set>
|
|
'>
|
|
<$macrocall $name="copy-to-clipboard-above-right" src=<<eg>>/>
|
|
<$codeblock code=<<eg>>/>
|
|
</$let>
|
|
|
|
!!! \procedure, \widget
|
|
|
|
<$let eg='\procedure pp1(a1) <<a1>>
|
|
|
|
\procedure pp2() <$parameters a1><<a1>></$parameters>
|
|
|
|
\procedure pp3()
|
|
\parameters(a1)
|
|
<<a1>>
|
|
\end
|
|
|
|
\procedure wp1(a1) <<a1>>
|
|
|
|
\widget wp2() <$parameters a1><<a1>></$parameters>
|
|
|
|
\widget wp3()
|
|
\parameters(a1)
|
|
<<a1>>
|
|
\end
|
|
|
|
|<<pp1 foo>>|<<pp2 foo>>|<<pp3 foo>>|
|
|
|<<wp1 foo>>|<<wp2 foo>>|<<wp3 foo>>|
|
|
'>
|
|
<$macrocall $name="copy-to-clipboard-above-right" src=<<eg>>/>
|
|
<$codeblock code=<<eg>>/>
|
|
</$let>
|
|
|
|
!!! \function
|
|
<$let eg='\function fp1(a1) [<a1>]
|
|
|<<fp1 foo>>|'>
|
|
<$macrocall $name="copy-to-clipboard-above-right" src=<<eg>>/>
|
|
<$codeblock code=<<eg>>/>
|
|
</$let>
|
|
|
|
|
|
!Behaviour of invoked variables depends on how the variable was declared
|
|
|
|
{{Behaviour of invoked variables depends on how the variable was declared}}
|
|
|
|
|
|
!Namespaces
|
|
|
|
*''tiddler titles'' - tiddlers are uniquely identified by their title. The namespace for tiddler titles and variable names are completely separate.
|
|
*''variables'' - \define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget, \function all create variables. If the same name is used, then later define will overwrite earlier defined
|
|
*''<<.op function>> filter operator parameter'' - only variables defined using \function can be called using the <<.olink function>> operator
|
|
*''filter operators'' - only the [[javascript defined filter operators|Filter Operators]] and variables defined using \function with name containing a dot can be called
|
|
*''widgets'' - variables defined using \widget can be invoked using `<$widget/>` syntax ONLY if the name starts a dollar sign. Without the dollar sign prefix, defining variables using \widget is no different than using \procedure.
|