vla*_*sch 5 perl template-toolkit
是否可以编写向调用者返回哈希值的宏或块?
我试图模块化一些模板代码:
[%-
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});
%]
Run Code Online (Sandbox Code Playgroud)
有没有办法实现类似的模式?
当我面临同样的问题时,我找不到办法。
作为一种解决方法,您可以传入一个引用并让宏修改引用的变量。这适用于数组和散列。
示例定义:
[%
# usage: newOb={}; MakeSomeThing(newOb, something)
MACRO MakeSomeThing(rv, something) BLOCK;
rv.a = 'a';
rv.b = something;
rv.c = 'c';
END;
%]
Run Code Online (Sandbox Code Playgroud)
使用示例:
[%
newOb = {};
MakeSomeThing(newOb, 'foo');
dumper.dump({'newOb' => newOb});
%]
Run Code Online (Sandbox Code Playgroud)