Perl 语句修饰符在模板工具箱中是如何工作的?
考虑以下命令按顺序运行:Perl 语句修饰符在模板工具箱中是如何工作的?,perl,template-toolkit,Perl,Template Toolkit,考虑以下命令按顺序运行: [% x = "foo" %] # x == "foo" [% x = "bar" IF 1 %] # x == "bar" [% x = "bar" IF 0 %] # x == "" 为什么x在第三条语句中被分配到一个空字符串 请注意将此语法与副作用表示法结合使用的一个重要注意事项。以下指令的行为与预期不符: [% var = 'value' IF some_condition %] # does not work 在这种情况下,为了
[% x = "foo" %] # x == "foo"
[% x = "bar" IF 1 %] # x == "bar"
[% x = "bar" IF 0 %] # x == ""
为什么x在第三条语句中被分配到一个空字符串
请注意将此语法与副作用表示法结合使用的一个重要注意事项。以下指令的行为与预期不符:
[% var = 'value' IF some_condition %] # does not work
在这种情况下,为了清晰起见,该指令被解释为添加了间距
[% var = IF some_condition %]
value
[% END %]
而不是
[% IF some_condition %]
[% var = 'value' %]
[% END %]
该变量被指定为IF块的输出,如果为true,则返回“value”,如果为false,则返回nothing。换句话说,以下指令将始终导致“var”被清除
[% var = 'value' IF 0 %]
为实现预期行为,指令应写成:
[% SET var = 'value' IF some_condition %]
请注意将此语法与副作用表示法结合使用的一个重要注意事项。以下指令的行为与预期不符:
[% var = 'value' IF some_condition %] # does not work
在这种情况下,为了清晰起见,该指令被解释为添加了间距
[% var = IF some_condition %]
value
[% END %]
而不是
[% IF some_condition %]
[% var = 'value' %]
[% END %]
该变量被指定为IF块的输出,如果为true,则返回“value”,如果为false,则返回nothing。换句话说,以下指令将始终导致“var”被清除
[% var = 'value' IF 0 %]
为实现预期行为,指令应写成:
[% SET var = 'value' IF some_condition %]