Help:循环
跳到导航
跳到搜索
本扩展利用解析器函数来执行循环。
用途[编辑]
#while[编辑]
{{#while}}执行一个循环(即反复解析给定的wiki标记块语句)直至条件判断语句为空字符串。
{{ #while: | (循环条件) | (块语句) }}
范例[编辑]
注意:以下示例需要用到变量。
wiki代码:
{{ #vardefine: i | 0 }}{{ #while: | {{ #ifexpr: {{ #var: i }} < 5 | true }} |<nowiki/> * {{ #var: i }}{{ #vardefine: i | {{ #expr: {{ #var: i }} + 1 }} }} }}
输出:
- 0
- 1
- 2
- 3
- 4
{{#while}}也可以用于一个模板来模拟一个数列。例如Template:Loops Test的内容为
{{ #vardefine: i | 0 }}{{ #while: | {{{ arg{{#var: i }} |}}} |<nowiki/> * {{{ arg{{#var: i }} }}}{{ #vardefine: i | {{ #expr: {{ #var: i }} + 1 }} }} }}
那么wiki代码
{{Loops Test |arg0=zero |arg1=one |arg2=two |arg3=three |arg4=four }}
输出
- zero
- one
- two
- three
- four
需要注意的是这些解析器函数所有参数的开头和结尾的空白,包括换行符、制表符和空格,会被自动忽略。若不希望其被忽略,增加任何非空白字符(包括一个空白字符的HTML编码 、 )将防止其被忽略(例如上面的</nowiki>标签)。
#dowhile[编辑]
{{#dowhile}}功能与{{#while}}相近,不同的是该块语句一定会被解析并显示(如果它为非空字符串)至少一次。即它的输出在循环条件判断之前。
#loop[编辑]
{{ #loop: (变量名) | (初始值) | (循环次数) | (块语句) }}
{{#loop}}重复指定次数(的绝对值)解析并输出块语句。循环次数由一个变量决定(需要变量这个拓展)。每次循环后该变量加1或减1,取决于循环次数的正负。
注意: 在所有的循环功能中,#loop应该是最简便的,它不需要额外设置循环判断条件。
范例[编辑]
以下代码:
{{#loop: varname | 4 | 4 | <nowiki/> * 这是第{{#var:varname}}轮,还需要循环{{#expr: 7- {{#var:varname}}}}次。 }}
输出
- 这是第4轮,还需要循环3次。
- 这是第5轮,还需要循环2次。
- 这是第6轮,还需要循环1次。
- 这是第7轮,还需要循环0次。
Template:Loop[编辑]
Template:Loop是一个利用解析器函数进行的伪循环,语法为
{{Loop|(循环次数)|(循环语句)}}
另有Template:Loopex,用法同{{loop}}。与前者不同的是以上拓展语法在整个页面内的循环次数上限为100,{{loop}}单个循环次数上限为100,而{{loopex}}则为10000,并可根据需要进一步提高。但{{loopex}}体积庞大,非必要时应避免使用。
{{loop}}和{{loopex}}通过嵌套循环理论上可以将上限提高到∞,但它们不支持变量。