是否可以编写将散列返回给调用方的宏或块?
我试图模块化一些模板代码:
[%-
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});
%]
有没有办法实现类似的模式?
答案 0 :(得分:4)
遇到相同的问题时,我找不到办法。
作为一种解决方法,您可以传入一个引用并让宏修改引用的变量。这适用于数组和哈希。
示例定义:
[%
# 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});
%]