“Template:Lj”与“Template:Loop/doc”:页面之间的差异

(页面间差异)
跳到导航 跳到搜索
添加3,663字节 、​ 2020年1月29日 (星期三)
创建页面,内容为“== 简介 == 该模板可以循环执行语句。相较于解析器函数,因为使用Lua模块进行循环,所以'''没有100次上限的限制'''。 == 用…”
imported>Yumeto
(以“{{lang|ja|{{{1}}}}}”替换内容)
 
imported>850710247liu
(创建页面,内容为“== 简介 == 该模板可以循环执行语句。相较于解析器函数,因为使用Lua模块进行循环,所以'''没有100次上限的限制'''。 == 用…”)
 
第1行: 第1行:
{{lang|ja|{{{1}}}}}
== 简介 ==
 
该模板可以循环执行语句。相较于解析器函数,因为使用Lua模块进行循环,所以'''没有100次上限的限制'''。
 
== 用法 ==
<pre>
{{loop | 自增/减变量名 = 初值 | 终值 | 自增/减量 |do= <nowiki><nowiki></nowiki>
循环执行的代码...
<nowiki></nowiki></nowiki>}}
</pre>
其中,使用自增/减变量的写法为:<code><nowiki>{{#var:变量名}}</nowiki></code>,如:<code><nowiki>{{#var:time}}</nowiki></code>。
 
默认的自增/减量在初值小于终值为1,在初值大于终值时为-1。
 
注意:
* 第一层循环的代码需要用<code><nowiki><nowiki></nowiki></code>标签包裹
* 多层循环中内层循环的代码不需要<code><nowiki><nowiki></nowiki></code>标签包裹
 
由于使用{{tl|loop}}调用时,上下文会被更改为{{tl|loop}},因此被<code><nowiki><nowiki></nowiki></code>标签包裹的代码将'''无法正常接收'''模板的接收参数(也即被三对大括号包裹的参数,如<code><nowiki>{{{1}}}</nowiki></code>)
 
如果需要使用传入的模板接收参数,可以改为直接调用[[模块:Loop]],具体方法为:将<code><nowiki>{{loop|...}}</nowiki></code>替换为<code><nowiki>{{#invoke:loop|main|...}}</nowiki></code>。
 
== 示例 ==
=== 示例1 ===
<pre>
{{#vardefine:count|0}}<!--
-->{{loop|time=1|101|do=
<nowiki><nowiki></nowiki>{{#vardefine:count| {{#expr: {{#var:count}} + {{#var:time}} }} }}<nowiki></nowiki></nowiki> }}
结果:{{#var:count}}
</pre>
{{#vardefine:count|0}}<!--
-->{{loop|time=1|101|do=
<nowiki>{{#vardefine:count| {{#expr: {{#var:count}} + {{#var:time}} }} }}</nowiki> }}
结果:{{#var:count}}
 
=== 示例2 ===
<pre>
{{#vardefine:count|0}}<!--
-->{{loop|time1=1|5|do=<nowiki><nowiki></nowiki>
  {{loop|time2=1|100|do=
   {{#vardefine:count| {{#expr: {{#var:count}} + {{#var:time1}} * {{#var:time2}} }} }}
  }}
<nowiki></nowiki></nowiki>}}
结果:{{#var:count}}
</pre>
{{#vardefine:count|0}}<!--
-->{{loop|time1=1|5|do=<nowiki>
  {{loop|time2=1|100|do=
   {{#vardefine:count| {{#expr: {{#var:count}} + {{#var:time1}} * {{#var:time2}} }} }}
  }}
</nowiki>
}}
结果:{{#var:count}}
 
=== 示例3 ===
当需要使用模板的接收参数时,请直接调用[[模块:Loop]]。
<pre>
{{#invoke:loop|main|time=1|5
|do=<nowiki><nowiki></nowiki>
{{#expr:{{#var:time}} + {{{1|0}}} }}{{{split|、}}}
<nowiki></nowiki></nowiki>
}}
</pre>
{{#invoke:loop|main|time=1|5
|do=<nowiki>
{{#expr:{{#var:time}} + {{{1|0}}} }}{{{split|、}}}
</nowiki>
}}
 
若以上代码位于某模板中,则:
* <code><nowiki>{{模板名称}}</nowiki></code>的结果为:1、2、3、4、5、
* <code><nowiki>{{模板名称|2}}</nowiki></code>的结果为:3、4、5、6、7、
* <code><nowiki>{{模板名称|2|split=@}}</nowiki></code>的结果为:3@4@5@6@7@
 
== 与解析器函数的替换 ==
 
本模板的参数与<code>#loop</code>略有不同,你可以通过一下方法快速替换:
#将<code>#loop:</code>替换为<code>subst:loop/auto|</code>。
#点击“保存更改”。
 
=== 例子 ===
替换过程中进行的更改以'''粗体'''标注。
#若有使用<code>#loop</code>的代码如下:
#:<div class="mw-code"><nowiki>{{</nowiki>'''#loop:'''<nowiki>i|5|10|{{#var:i}}<br />}}</nowiki></div>
#将<code>#loop:</code>替换为<code>loop/auto|</code>:
#:<div class="mw-code"><nowiki>{{</nowiki>'''subst:loop/auto|'''<nowiki>i|5|10|{{#var:i}}<br />}}</nowiki></div>
#点击保存,原内容被替换为
#:<pre>{{#invoke:loop|main|i=5|14|do=<nowiki><nowiki></nowiki>{{#var:i}}<br /><nowiki></no</nowiki>wiki> }}</pre>
 
<includeonly>[[分类:功能模板]]</includeonly><noinclude>[[分类:模板说明文件]]</noinclude>

导航菜单