繁体   English   中英

Template Toolkit:如何从MACRO BLOCK返回哈希

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM