gpt4 book ai didi

perl - 模板工具包和惰性Moose属性-如何使它们表现出来?

转载 作者:行者123 更新时间:2023-12-04 13:33:44 25 4
gpt4 key购买 nike

如果我使用Moose在perl类中声明了lazy属性,并且该属性正在使用builder:

has 'colors' => (
is => 'rw',
isa => 'ArrayRef',
lazy => 1,
builder => '_build_colors',
);

然后在Template::Toolkit模板中,我将尝试使用此属性:
[% FOREACH color IN colors %]
...
[% END %]

我什么也不会得到。在使用TT处理属性之前,我必须在perl脚本中手动调用此attr。
TT有什么方法可以自己初始化此attr?

最佳答案

我假设您正在像这样传递Moose对象。

$template->process('some.tt', $moose_object, ... );

第二个参数被假定为hashref,而不是任何一种有福的对象(Moose与否)。

因此,在通过在Template Toolkit外部调用访问器填充它之前,Moose对象被视为普通哈希,并且没有'colors'键。

您需要执行以下操作:
$template->process('some.tt', { obj => $moose_object }, ... );

然后在您的模板中:
[% FOREACH color IN obj.colors %]
...
[% END %]

哪个应该可以按您期望的那样工作。

关于perl - 模板工具包和惰性Moose属性-如何使它们表现出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com