模板:If empty
来自RIA | Wiki
更多操作
此模板用于其他模板内, 它采用任意数量的参数, 并返回第一个被定义且非空的参数。如果未找到, 则不返回任何内容。典型用法如下:
{{If empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}
("如果 {{{logo|}}} 有值就返回{{{logo|}}}; 否则返回 {{{image|}}} , 如果它有值的话; 否则返回 {{{picture|}}} , 如果它有值的话; 否则返回 "default.svg".")
基本原理
MediaWiki参数默认函数不会为空参数返回默认值。也就是当这样写时: {{template|logo=}} , 参数{{{logo|default.svg}}} 不会返回 "default.svg"。
单个参数的通常解决方法是:
{{#if:{{{logo|}}} |{{{logo}}} |default.svg}}- ( "如果 {{{logo}}} 有值, 就返回它, 否则返回 "default.svg". " )
但是, 当要检查几个参数时, 这变得很复杂:
{{#if:{{{logo|}}} |{{{logo}}} |{{#if:{{{image|}}} |{{{image}}} |{{#if:{{{picture|}}} |{{{picture}}} |default.svg}} }} }}- ("如果 {{{logo}}} 有值, 返回 {{{logo}}}; 否则如果 {{{image}}} 有值, 返回 {{{image}}}; 否则如果 {{{picture}}} 有值, 返回 {{{picture}}} ; 否则返回 "default.svg".")
在这些情况下, {{if_empty}}产生更简单的语法 (如上所述) :
{{if empty |{{{logo|}}} |{{{image|}}} |{{{picture|}}} |default.svg}}
管道化
与{{if empty}}一起使用的参数必须通过管道符传递 [即, 包括竖线 (管道) 符号 ( "|" ) 作为尾随字符] , 以免将空或未定义的参数视为文本并错误地返回。因此, 例如{{{logo|}}}, {{{image|}}}和{{{picture|}}}而非{{{logo}}}, {{{image}}}和以上示例中的{{{picture}}}。
例子
| 代码 | 结果 | |
|---|---|---|
| {{if empty}} | 返回空字串符。 | |
| {{if empty|one}} | one | 返回已定义且不为空的第一个参数。 |
| {{if empty|one|two}} | one | |
| {{if empty|one|two|three|four}} | one | |
| {{if empty||two}} | two | |
| {{if empty||two|three|four}} | two | |
| {{if empty||||||||||ten}} | ten | 与以前的版本不同,此模板不再受9个参数的限制。 |
| {{if empty}} | 唯一的参数为空或未定义, 因此返回空字符串。 | |
| {{if empty||||}} | 返回空字符串。 | |
| {{if empty|{{{1|}}}|{{{2|}}}|three}} | three | |
| {{if empty|{{{1}}}|{{{2}}}|three}} | {{{1}}} | 前两个参数 ( "1" 和 "2" ) 的名称后面没有管道字符, 因此其中第一个以文本形式返回 ( "{{{{1}}}" ) 。 |
| {{if empty|{{{logo|}}}|two}} | two | |
| {{if empty|{{{logo}}}|two}} | {{{logo}}} | 参数名称 "logo" 后面没有管道符, 因此返回文本 "{{{logo}}}" 。 |
| {{if empty|p=q}} | 模板将其接收的参数标识为参数1到9, 而不使用诸如 "p" 之类的名称。 |