如何将 undef 作为参数从 TT 模板传递给对象方法?
Template-Toolkit 似乎总是希望将 undef 插入空字符串。因此,像这样的模板:
Result is [% some_object.some_method (1, undef, 2) %]
或这样:
Result is [% ttvar %]
[% some_object.some_method (1, ttvar, 2) %]
生成对 Perl 的调用,例如:
some_object->some_method (1, '', 2)
当我想要的是:
some_object->some_method (1, undef, 2)
有没有办法传递 undef 而不是空字符串?
Template-Toolkit seems to want to always interpolate undef to the empty string. So a template like this:
Result is [% some_object.some_method (1, undef, 2) %]
or this:
Result is [% ttvar %]
[% some_object.some_method (1, ttvar, 2) %]
produces a call to Perl like:
some_object->some_method (1, '', 2)
when what I want is:
some_object->some_method (1, undef, 2)
Is there any way to pass undef instead of an empty string?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我添加了另一个答案来展示 EVAL_PERL 如何在 TT 中工作的示例:
上面的输出如下:
因为 TT 充当预处理器并生成以下要解释的 Perl 代码:
注意。上面一行中的 $stash 由 TT 提供,是对顶级存储对象的引用。
/I3az/
I've added another answer to show an example of how EVAL_PERL works in TT:
The above outputs the following:
Because TT is acting as a pre-processor and produces the following Perl code to interpret:
NB. $stash in above line is provided by TT and is a reference to the top level stash object.
/I3az/
使用
[% PERL %]
怎么样?How about using
[% PERL %]
?这是
Template Toolkit
的设计决策。 Perl 模板工具包“Badger book” 第 50 页:然而,您可以做的是使用 DEBUG 选项让 TT 在看到 undef 时提供警告。请参阅SO问题Perl的模板工具包可以对未定义的值发出警告吗? 了解更多信息。
/I3az/
This is a design decision with
Template Toolkit
. From page 50 of the Perl Template Toolkit "Badger book":However what you can do is make TT provide a warning when it sees an undef by using the DEBUG option. See the SO question Can Perl’s Template Toolkit warn on undefined values? for more info.
/I3az/