6

是否可以在模板工具包中反转匿名列表?

例如

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

(除非那不起作用)。

只是想知道是否有一种巧妙的方法可以在不使用变量或显式输入数组的情况下做到这一点。

4

3 回答 3

10

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

编辑:你甚至不能传递一个子程序来尝试像这样使用:

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

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

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

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

于 2010-01-15T17:42:08.650 回答
0

我有点新,但是这个呢:

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

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

于 2015-07-13T18:04:10.770 回答
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 %]
于 2017-05-03T07:54:24.453 回答