assign指令
使用方法
<#assign name1=value1 name2=value2 ... nameN=valueN>
或
<#assign same as above... in namespacehash>
或
<#assign name>
capture this
</#assign>
或
<#assign name in namespacehash>
capture this
</#assign>
-
name:變量名。 -
=:賦值操作符。 它也可以是一個(gè)簡(jiǎn)寫(xiě)的賦值操作符(從 FreeMarker 2.3.23 版本開(kāi)始):++,--,+=,-=,*=,/=或%=。比如<#assign x++>和<#assign x = x + 1>是一樣的,并且<#assign x += 2>和<#assign x = x + 2>是相同的。 請(qǐng)注意,++通常意味著算術(shù)加法 (對(duì)于非數(shù)字將會(huì)失敗),不像+或+=可以進(jìn)行字符連接等重載操作。 -
value: 存儲(chǔ)的值。是表達(dá)式。 -
namespacehash:(通過(guò) [import] 為命名空間創(chuàng)建的哈希表。是表達(dá)式。
舉例
- 1、定義簡(jiǎn)單類(lèi)型
<#assign name="李四">
姓名:${name}
- 2、定義對(duì)象類(lèi)型
<#assign info={"name":"張三","address":"上海"}>
姓名:${info.name}
地址:${info.address}
描述
使用該指令你可以創(chuàng)建一個(gè)新的變量, 或者替換一個(gè)已經(jīng)存在的變量。
比如:變量 seq 存儲(chǔ)一個(gè)序列:
<#assign seq = ["foo", "bar", "baz"]>
比如:變量 x 中存儲(chǔ)增長(zhǎng)的數(shù)字:
<#assign x++>
可以使用一個(gè) assign 標(biāo)記來(lái)定義定義多個(gè)變量
<#assign
seq = ["foo", "bar", "baz"]
x++
>
assign 的極端使用是當(dāng)它捕捉它的開(kāi)始標(biāo)記和結(jié)束標(biāo)記中間生成的輸出時(shí)。 也就是說(shuō),在標(biāo)記之間打印的東西將不會(huì)在頁(yè)面上顯示, 但是會(huì)存儲(chǔ)在變量中。比如:
<#macro myMacro>foo</#macro>
<#assign x>
<#list 1..3 as n>
${n} <@myMacro />
</#list>
</#assign>
Number of words: ${x?word_list?size}
${x}
將會(huì)輸出:
Number of words: 6
1 foo
2 foo
3 foo
不可以使用它來(lái)往字符串中插入變量:
<#assign x>Hello ${user}!</#assign> <#-- 錯(cuò)誤 -->
你可以這么來(lái)寫(xiě):
<#assign x="Hello ${user}!">