如何撤消模板工具包中的匿名列表?

时间:2010-01-15 16:19:28

标签: perl template-toolkit

是否可以撤消模板工具包中的匿名列表?

e.g。

[% FOREACH month IN [1..12].reverse %]
    [% month %]
[% END %]

(除了不起作用)。

只是想知道是否有一种巧妙的方法可以在不使用变量或明确输入数组的情况下进行。

3 个答案:

答案 0 :(得分:10)

抱歉,没有。能够在原地实例化匿名数组是由TT解析器处理的特殊情况。如果没有分配给命名变量的中间步骤,就不能像常规Perl一样对它们进行操作。

编辑:您甚至无法传入子程序尝试使用如下:

[% FOREACH month IN my_reverse([1..12]) %]
    [% month %]
[% END %]

你也不能尝试在对象上使用方法:

[% FOREACH month IN testObj.my_reverse([1..12]) %]
    [% month %]
[% END %]

他们将编译,但在每种情况下,FOREACH构造都会看到链的头部,例如第一种情况下的CODE引用和第二种情况下的受祝福对象。

答案 1 :(得分:0)

我有点新,但是这个:

[%months = ['jan','feb','mar',...]; ##数月的数组

[%FOREACH i = [(months.size-1) -1 .. 0]%] ##计算12个元素的-11到0 [%months [(i -1)] ##将i转换为正数 - 显示月份[11],月份[10] ...个月[0]

答案 2 :(得分:0)

<!-- show 2010 2009 2008 2007 -->
[% SET startyear = 2007 %]
[% SET endyear = 2010 %]
[% SET allyears = [ startyear .. endyear ] %]
[% FOREACH year IN alleyears.reverse %]
   <li>[% year %]</li>
[% END %]