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编码&#32;、&nbsp;)将防止其被忽略(例如上面的</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}}通过嵌套循环理论上可以将上限提高到,但它们不支持变量

参见[编辑]