| 此模板使用Lua语言: |
该模板可以循环执行语句。相较于解析器函数,因为使用Lua模块进行循环,所以没有100次上限的限制。
{{loop | 自增/减变量名 = 初值 | 终值 | 自增/减量 |do= <nowiki>
循环执行的代码...
</nowiki>}}
其中,使用自增/减变量的写法为:{{#var:变量名}},如:{{#var:time}}。
默认的自增/减量在初值小于终值为1,在初值大于终值时为-1。
注意:
<nowiki>标签包裹<nowiki>标签包裹由于使用{{loop}}调用时,上下文会被更改为{{loop}},因此被<nowiki>标签包裹的代码将无法正常接收模板的接收参数(也即被三对大括号包裹的参数,如{{{1}}})
如果需要使用传入的模板接收参数,可以改为直接调用模块:Loop,具体方法为:将{{loop|...}}替换为{{#invoke:loop|loop|...}}。
{{loop|time=1|7|1|do=<nowiki>
第{{#var:time}}日,赐以{{#switch:{{#var:time}}|1=真实|2=历法|3=言语|4=价值|5=规则|6=意义|7=尊严}}!<br/>
</nowiki>}}
第1日,赐以真实!
第2日,赐以历法!
第3日,赐以言语!
第4日,赐以价值!
第5日,赐以规则!
第6日,赐以意义!
第7日,赐以尊严!
<!-- 无法在这里用wikitext构建表格({| ... |}),因为表格有一部分在循环内,一部分在循环外 -->
<!-- 两部分对wikitext的处理时机不同,会导致表格被拆开,循环内的部分被当成普通文本 -->
<table class="wikitable">
{{loop|time1=1|9|do=<nowiki>
<tr>
{{loop|time2=1|9|do=
<td>{{#expr: {{#var:time1}} * {{#var:time2}} }}</td>
}}
</tr>
</nowiki>}}
</table>
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
| 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
| 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
| 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
| 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
| 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
| 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
| 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
当需要使用模板的接收参数时,请直接调用模块:Loop。
{{#invoke:loop|loop|time=1|5
|do=<nowiki>
{{#expr:{{#var:time}} + {{{1|0}}} }}{{{split|、}}}
</nowiki>
}}
1、2、3、4、5、
若以上代码位于某模板中,则:
{{模板名称}}的结果为:1、2、3、4、5、{{模板名称|2}}的结果为:3、4、5、6、7、{{模板名称|2|split=@}}的结果为:3@4@5@6@7@本模板的参数与#loop略有不同,你可以通过一下方法快速替换:
#loop:替换为subst:loop/auto|。替换过程中进行的更改以粗体标注。
#loop的代码如下:
#loop:替换为loop/auto|:
{{#invoke:loop|loop|i=5|14|do=<nowiki>{{#var:i}}<br /></nowiki> }}