<#local name=value>
<#local name1=value1 name2=value2 ... nameN=valueN>
<#local name>
  capture this


  • name: the name of the local object in the root. It is not an expression. However, it can be written as a string literal, which is useful if the variable name contains reserved characters, for example <#local "foo-bar" = 1>. Note that this string literal does not expand interpolations (as "${foo}").
  • =: Assignment operator, which can also be one of the shorthand assignment operators (++, +=, etc.), just like with the assign directive,
  • value: the value to store. Expression.


It is similar to assign directive, but it creates or replaces local variables. This only works inside macro definitions and function definitons.

For more information about variables, read this: Template Author's Guide/Miscellaneous/Defining variables in the template