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最初のケースでは参照、2 番目のケースでは祝福されたオブジェクトです。

于 2010-01-15T17:42:08.650 に答える
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 に答える