循环变量内建函数

循环变量内建函数

PreviousNext

循环变量内建函数

Page Contents

counterhas_nextindexis_even_itemis_firstis_lastis_odd_itemitem_cycleitem_parityitem_parity_cap

Note:

循环变量内建函数从 FreeMarker 2.3.23 版本开始存在。

这些内建函数只能用于list 和

items 指令 的循环变量

(也可以用于已经废弃的 foreach 指令)。

下面是一些说明(loopVar?index

在可以列表的值中进行迭代,返回从0开始的索引):

<#-- Note: x is a loop variable -->

<#list ['a', 'b', 'c'] as x>

${x?index}

0

1

2当 list 指令不指定循环变量时,

这些内建函数就作用于 items 指令的循环变量:

<#list ['a', 'b', 'c']>

    <#items as x>

  • ${x?index}

循环变量内建函数仅仅用于循环变量的 名字,

所以它们可以识别相关进行的迭代。它们不读取循环变量的

值。因此,这就会有解析错误:

<#list ['a', 'b', 'c'] as x>

<#assign y = x>

${y?index} <#-- ERROR: y isn't a loop variable -->

counter

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

返回当前迭代(由循环变量名称识别)从1开始的索引。

<#list ['a', 'b', 'c'] as i>

${i?counter}: ${i}

1: a

2: b

3: c

Note:

要从0开始的索引,请使用 index

内建函数。

has_next

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。

<#list ['a', 'b', 'c'] as i>${i?has_next?c}

true true false

Note:

使用逗号等隔开循环项,请使用

<#sep>separator

来代替 <#if

var?has_next>separator,这样可读性更强。(此外

经常被忽略,比如在

<#list ... as

var>...${var}...<#sep>separator

中)

Note:

如果需要对该内建函数取反,请使用

var?is_last 来代替

!var?has_next,

因为它的可读性更强。

index

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

返回当前迭代(由循环变量名称识别)从0开始的索引。

<#list ['a', 'b', 'c'] as i>

${i?index}: ${i}

0: a

1: b

2: c

Note:

要从1开始的索引,请使用 counter

内建函数。

is_even_item

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的奇数项。

<#list ['a', 'b', 'c', 'd'] as i>${i?is_even_item?c}

false true false true

Note:

要将表格进行行间变色等操作,请使用

var?item_parity

或 var?item_cycle(...)

来代替。

is_first

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)的第一项。

<#list ['a', 'b', 'c'] as i>${i?is_first?c}

true false false

is_last

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)的最后一项。

<#list ['a', 'b', 'c'] as i>${i?is_last?c}

false false true

Note:

如果需要对该内建函数取反,请使用

var?has_next 来代替

!var?is_last,

因为它的可读性更强。

Note:

使用逗号等隔开循环项,请使用

<#sep>separator

来代替 <#if

var?has_next>separator,因为它的可读性更强。(此外

经常被忽略,比如在

<#list ... as

var>...${var}...<#sep>separator

中)

is_odd_item

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

辨别循环项是否是当前迭代(由循环变量名称识别)间隔1的偶数项。

<#list ['a', 'b', 'c', 'd'] as i>${i?is_odd_item?c}

true false true false

Note:

要将表格进行行间变色等操作,请使用

var?item_parity

或 var?item_cycle(...)

来代替。

item_cycle

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

这是 item_parity

内建函数 更为通用的版本,这里可以指定何值来代替

"odd" 和 "even"。

它也允许多余两个值来循环。

<#list ['a', 'b', 'c', 'd', 'e', 'f', 'g'] as i>

${i}

a

b

c

d

e

f

g

一些细节:

参数的个数至少是1个,没有上限。

参数的类型是任意的,无需只是字符串。

Note:

如果需要"odd"

和 "even",请使用 item_parity

内建函数 来代替。

item_parity

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性,

返回字符串值 "odd" 或 "even"。

这通常用于表格中行间的颜色变换:

<#list ['a', 'b', 'c', 'd'] as i>

${i}

a

b

c

d

Note:

请使用 item_parity_cap

内建函数 来大写 "Odd" 和

"Even"。请使用 item_cycle

内建函数 来指定自定义值,或多于两个值。

item_parity_cap

Note:

该内建函数从 FreeMarker 2.3.23 版本开始可用。

基于当前迭代(由循环变量名称识别)间隔为1的索引的奇偶性,

返回字符串值 "Odd" 或 "Even"

(请注意大写)。

<#list ['a', 'b', 'c', 'd'] as i>

${i}

a

b

c

d

Note:

请使用 item_parity

内建函数 来小写 "odd" 和

"even"。

PreviousNext

❈ ❈ ❈

相关文章

✧ ✧ ✧
解放军硬核实力有多“燃”?盘点近年来中国新亮相的武器装备
风物二十四节气
365365bet官

风物二十四节气

📅 01-28 👁️ 4972
手机上的尺子在线
365体育旗下

手机上的尺子在线

📅 07-21 👁️ 5465