帮助:解析函数/forargs
forargs是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
forargs
在模板中遍历参数并对每个参数执行指定代码的解析函数。出自扩展 Loops。
forargs解析函数允许用户通过指定过滤器、键变量名和值变量名,遍历模板传入的参数,并在每次迭代中执行提供的代码块。
语法
{{#forargs: prefix | key | value | code}}
- prefix:参数名的前缀。
- key:变量名,存储参数名,不包括前缀。
- value:变量名,存储参数值。
- code:每次循环时被解析的wikitext,支持使用
、帮助:解析函数
输出参数名和值。
如果前缀非数字,仅处理匹配前缀的命名参数。前缀是数字时,处理所有参数(编号参数和命名参数)中匹配前缀的参数。
前缀为空时,遍历处理所有参数。
示例
在模板:Test中编写如下代码,遍历前缀为a的参数:
<includeonly>{{#forargs:a
| key
| value
| {{#var:key}} = {{#var:value}}<br>
}}
</includeonly><noinclude>
{{Test|a1=1|a2=2|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 1
2 = 2
在模板:Test中编写如下代码,遍历所有参数:
<includeonly>{{#forargs:| key | value | {{#var:key}} = {{#var:value}}; }}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 8; 2 = 9; a1 = 1; a2 = 2; a3 = 3; b1 = 4; b2 = 5; c1 = 6; c2 = 7;
使用switch跳过或单独处理指定参数:
<includeonly>{{#forargs:| key | value |{{#switch: {{#var:key}}
| a1 = <!-- 跳过a1 -->
| b2 = 单独处理b2;
| #default = {{#var:key}} = {{#var:value}};
}}}}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 8;2 = 9;a2 = 2;a3 = 3;b1 = 4;单独处理b2;c1 = 6;c2 = 7;
注意,forargs的参数key、value会在展开wikitext后才按指定格式输出,这可能会导致非预期行为。
假设模板B的内容是
{{#vardefine:active|233}}
模板A的内容是
{{#vardefine:active|0}}
{{#forargs:| k | v | {{#var:active}} }}
那么,{{A| {{B}} }}
的结果会是233
底层代码
- 代码逻辑:
- 检查是否在模板实例中调用,如果不是则返回空字符串。
- 提取并处理参数。
- 根据前缀决定处理哪些参数。
- 循环遍历符合条件的参数,设置变量的值,并执行code代码块,将结果拼接起来返回。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。