2010-01-15 25 views
6

Có thể đảo ngược danh sách ẩn danh trong bộ công cụ mẫu không?cách đảo ngược danh sách ẩn danh trong bộ công cụ mẫu?

ví dụ:

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

(trừ trường hợp đó không có tác dụng).

Chỉ cần tự hỏi nếu có một cách gọn gàng để làm điều đó mà không sử dụng các biến hoặc loại bỏ một cách rõ ràng mảng.

+0

Có vẻ như ai đó cần viết Mẫu :: Plugin :: Autobox. – oeuftete

Trả lời

10

Rất tiếc, không có. Việc có thể khởi tạo các mảng ẩn danh tại chỗ là một trường hợp đặc biệt được xử lý bởi trình phân tích cú pháp TT. Bạn không thể hoạt động trên chúng như bạn có thể trong Perl thông thường mà không có bước trung gian gán cho một biến được đặt tên.

EDIT: Bạn thậm chí không thể vượt qua trong một chương trình con để cố gắng sử dụng như sau:

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

Cũng không phải bạn có thể thử sử dụng một phương thức trên một đối tượng:

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

Họ sẽ biên dịch, nhưng trong mỗi trường hợp, cấu trúc FOREACH thấy đầu của chuỗi, ví dụ: một tham chiếu CODE trong trường hợp đầu tiên và một đối tượng may mắn trong trường hợp thứ hai.

+0

Cảm ơn Adam, điều đó rất hữu ích để biết. – aidan

0

Tôi là một chút mới nhưng những gì về vấn đề này:

[% tháng = [ 'Tháng một', 'Tháng hai', 'mar', ...]; ## mảng tháng

[% FOREACH i = [(tháng.size-1) -1 .. 0]%] ## đếm -11 đến 0 cho 12 phần tử [% tháng [(i - 1)] ## chuyển đổi i thành số dương - hiển thị tháng [11], tháng [10] ... tháng [0]

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 %] 
Các vấn đề liên quan