perl - 如何使用Template Toolkit打印递归数据结构?

标签 perl template-toolkit

我正在尝试使用模板工具包打印递归数据结构。我如何在我的模板文件中描述这一点?

我有一个数据结构(哈希数组),其中包含一些像这样的元素

ELEMENT
-> Description: XYXY
-> Childs: [Array of Child ELEMENTS of same type]

其中 childs 可以包含子元素数组。我现在想递归打印所有内容,包括元素子元素和那些子元素等等。

我怎样才能实现这个目标?

最佳答案

您可以使用PROCESS将数据传递到BLOCK,您可以递归地执行此操作。例如:

[%

SET element = {
    description = "A",
    children= [
        {
            description= "AA",
            children= [
                { description = "AAA" }
            ]
        },
        {
            description= "AB",
            children= [
                { 
                    description = "ABA",
                    children = [
                        { 
                            description = "ABAA"
                        }
                    ]

                },
                { description = "ABB" }
            ]
        }
    ]
};

%]


[% BLOCK show_element %]
    [% my_element.description | html %]
    [% IF my_element.children %]
        <ul>
            [% FOR child_element IN my_element.children %]
                <li>[% PROCESS show_element my_element=child_element %]</li>
            [% END %]
        </ul>
    [% END %]
[% END %]

[% PROCESS show_element my_element=element %]

关于perl - 如何使用Template Toolkit打印递归数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35656147/

相关文章:

正则表达式匹配多个负前瞻

multithreading - 如何在 Perl 中实现信号量线程通信?

perl - Template Toolkit 中的有效变量名称

javascript - 提供可下载的 perl-template 文件

Perl - 模板合金和模板工具包数组引用

arrays - 如何使用 Template Toolkit 访问数组的元素?

multithreading - GC 无法在 Windows 上使用 fork-emulation 回收内存

perl - "0 but true"在 Perl 中意味着什么?

perl - 我可以在模板中设置模板继承吗? (模板工具包)

python - Python 中 Perl 的 BEGIN{} block