我有一个安装了Semantic MediaWiki扩展的MediaWiki站点.我想测试字符串是否为空.为此,我做:
{{#if: {{{transcript.lncrna}}} | Yes | No}}
Run Code Online (Sandbox Code Playgroud)
显然,{{{transcript.lncrna}}}是空的,它什么都没有.但是,解析器函数#if告诉我是答案.
怎么了?
当涉及MediaWiki解析器函数时,变量为空,变量未定义是两个不同的东西.在您的情况下,{{{transcript.lncrna}}}很可能没有定义.然后,MediaWiki会像你试图写出文本"{{{transcript.lncrna}}}"那样对待它,当然,这会使if语句返回true.
要检查参数是否为空,您需要添加一个空的默认值,写入{{{transcript.lncrna|}}}(注意水平条):
{{#if: {{{transcript.lncrna|}}} | Yes | No}}
Run Code Online (Sandbox Code Playgroud)
这是一张具有不同可能性的表格
value of {{{param}}}: undefined | nothing | whitespace | something
--------------------------------------------------------------------------------
{{#if: {{{param|}}} | Yes | No}} | No | No | No | Yes
{{#if: {{{param}}} | Yes | No}} | Yes | No | No | Yes
Run Code Online (Sandbox Code Playgroud)