打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

目前wiki关闭了自行注册账号的功能,如需注册账号,请查阅Help:注册账号

模板:For loop

来自RIA | Wiki
Fanti留言 | 贡献2023年4月11日 (二) 09:23的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
模板文档

该模板实现了for循环foreach循环

此模板多次调用用户指定的模板 ( "调用模板" ) : 给予1) 迭代序列或 2) 显式列表中的每个值一次。序列或列表中的每个值都传递给被调用模板的相同指定参数 ( "变量参数" )。可选的, 可以将前缀和后缀附加到传递的值。

除了指定的变量参数外, 可以为被调用模板的其他参数 ( "静态参数" ) 赋予一个在每次迭代中相同的值。

使用

参数 含义 默认值
必须参数 1 (未命名) 两次调用之间输出的分隔符 (可以为空白; 保留空格)
call 要调用的模板
pv 被调用模板的变量参数的名称 (或编号) 1
可选 1:
重复序列
start 传递给变量参数的第一个数值 1
stop 变量参数的最大数值
by 传递给变量参数的值之间的迭代步长 1
可选 2:
显式值
(未命名参数) 显式值, 作为单独的参数给出 (去除空格)
skipBlanks 设置为 "true" 可跳过空参数值 false
其他可选
参数
pc[N]n 被调用模板的第N个静态参数的名称 (或编号)
pc[N]v 被调用模板的第N个静态参数的值
prefix 传递给变量参数的每个值之前的静态前缀
postfix 传递给变量参数的每个值之后的静态后缀
substall 设置为 "false" 以在替换引用{{for_loop}}时不替换被调用的模板 true

可以使用 "选项1" (迭代参数) 或 "选项2" (值的显式列表) , 但不能同时使用。

在任何显式值之前的第一个未命名参数是分隔符。分隔符是一个字符串, 该字符串在对 |call= 中命名的模板的调用之间输出。最后一次调用后不输出。

注意

  • 分隔符可以以 "1=" 开头, 但是在这种情况下, 分隔符不能在开头和结尾处包含换行符和空格。
  • 如果任何参数值包含等号, 请使用 {{[[Template:{{{1}}}|{{{1}}}]]}} (参见 模板用法提示和解决方法)。
  • 如果你使用命名参数, 注意第一个值是参数2 (例如: |2=Your1stValue) , 因为参数1是分隔符。
  • 若你使用命名参数, 你不能跳过任何编号。循环将会在发现第一个不存在编号参数后终止。 (参数可以是空白, 但不能不存在)

替换

当前的基于Lua的模板支撑替换。如果未定义|substall=no, 则替换引用此模板时将会将所有东西替换, 包括对|call=中传递模板的调用; 如果被定义, 则该模板将替换为对指定模板的一系列调用。


示例

表单 代码 说明 结果
迭代器
{{For loop
  | 1 = & 
  | call = Font
  | pv = size
  | start = 10
  | stop = 26
  | by = 2
  | postfix = px
  | pc1n = 1
  | pc1v = A
  | pc2n = bgcolor
  | pc2v = yellow
}}
调用模板 "{{Font}}", 使用这些值:
  • font-size = "[N]px", 其中 N 取值从10开始, 每迭代增加2, 同时保持小于或等于26
  • 1 = "A"
  • bgcolor = "yellow"

使用 "&" 分隔输出

A&A&A&A&A&A&A&A&A

显式值
{{For_loop
|, 
| call = 1x
| prefix = 1
|00|01|02|03|04|05|06|07|08|09
|10|11|12|13|14|15|16|17|18|19
|20|21|22|23|24|25|26|27|28|29
|30|31|32|33|34|35|36|37|38|39
|40|41|42|43|44|45|46|47|48|49
|50|51|52|53|54|55|56|57|58|59
|60|61|62|63|64|65|66|67|68|69
|70|71|72|73|74|75|76|77|78|79
|80|81|82|83|84|85|86|87|88|89
|90|91|92|93|94|95|96|97|98|99
}}
使用值 "1[NN]" 调用模板 "{{1x}}", 从 NN = "00" 到 "99" (明确给出) , 使用字串符 ", " 分隔输出。

100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199

其他带有显式值的示例

{{For_loop|-|a|3||c|g|call=3x}}, 使用 {{3x}}, 生成:

aaa-333-ccc-ggg

{{for_loop|

|a|3||c|g|call=3x}}

生成:

aaa

333

ccc

ggg

{| class="wikitable sortable"
  |-
  ! 测试
  |-
  | {{For_loop|
  {{!}}-
  {{!}} |a|b|c|d|e|call=3x}}
|}

生成:

测试
aaa
bbb
ccc
ddd
eee
{{for loop| |01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19
|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39
|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59
|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79
|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99
|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119
|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139
|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|call=1x}}

生成:

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

begin-> {{For_loop|{{=}} |01|02|03|04|05|06|07|08|09|10
|11{{=}}{{=}}{{=}}|12|13|14|15|16|17|18|19|call=1x}} <-end

生成:

begin-> 01= 02= 03= 04= 05= 06= 07= 08= 09= 10= 11==== 12= 13= 14= 15= 16= 17= 18= 19 <-end

脚注