[英]Template Toolkit: how return a hash from a MACRO BLOCK
是否可以编写将哈希返回给调用者的宏或块?
我试图模块化一些模板代码:
[%-
MACRO MakeSomeThing(something) BLOCK;
s = { a => 'a',
b => something,
c => 'c'
};
# RETURN s; # not allowed
# s; # just returns the hash ref string (HASH(0x32e42e4))
END;
newOb = MakeSomeThing('foo');
dumper.dump({'newOb' => newOb});
%]
有没有办法实现类似的模式?
当我遇到同样的问题时,我找不到办法。
作为一种变通方法,您可以传入引用并让宏修改引用的变量。 这适用于数组和散列。
示例定义:
[%
# usage: newOb={}; MakeSomeThing(newOb, something)
MACRO MakeSomeThing(rv, something) BLOCK;
rv.a = 'a';
rv.b = something;
rv.c = 'c';
END;
%]
使用示例:
[%
newOb = {};
MakeSomeThing(newOb, 'foo');
dumper.dump({'newOb' => newOb});
%]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.