社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
帮助:解析函数/dowhile
dowhile是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
dowhile
循环。只要条件wikitext的结果非空白,就会持续循环。出自扩展 Loops。
与#while不同的是,循环体的内容会至少执行一次。
语法
{{#dowhile: 条件 | 代码 }}
- 条件:表示循环继续执行的条件。只要条件wikitext的结果非空,就会持续循环
- 代码:表示每次循环要执行的代码块,即每次都会重复解析的wikitext。
示例
以列表的格式输出0-4
{{#vardefine: i | 0 }}{{#dowhile:
| {{#ifexpr: {{#var: i }} < 5 | true }}
| <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
- 0
- 1
- 2
- 3
- 4
至少会执行一次(如果换成while则没有输出,因为首次运行时条件就不满足):
{{#vardefine: i | 9999 }}{{#dowhile:
| {{#ifexpr: {{#var: i }} < 1 | true }}
| <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
- 9999
底层代码
- 代码逻辑:
- 条件检查:如果当前不是 `dowhile` 循环(即 `$dowhile` 为 `false`),并且条件为空,则直接结束(返回空字符串)。否则进入循环体。
- 循环执行:
- 在每次循环开始前,检查是否超过了最大循环次数限制。如果超过限制,返回错误信息。
- 执行循环体内的代码,并将结果添加到输出字符串 $output 中。
- 检查条件是否为真(条件wikitext解析结果是非空字符串)。如果是真,则继续下一次循环;否则,退出循环。
- 返回结果:最终返回循环体内所有执行结果的拼接字符串 $output。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:官方周边 - 恋与深空