นี่เป็นมอดูลที่ถูกป้องกันถาวรเนื่องจากมีความเสี่ยงสูง กรุณาอภิปรายการเปลี่ยนแปลงใด ๆ ทาง(หน้าคุย) คุณอาจส่งคำขอแก้ไขไปยังเพื่อให้แก้ไขได้หากเป็นการแก้ไขที่ไม่มีการคัดค้านหรือมีความเห็นพ้องสนับสนุน คุณยังสามารถขอให้เลิกป้องกันหน้าได้ |
มอดูลนี้ขึ้นอยู่กับมอดูลอื่น ๆ ดังต่อไปนี้
|
This template implements a or a .
This template calls a user-specified template (the "called template") multiple times: once for each value in either 1) an iterated sequence or 2) an explicit list. Each value in the sequence or list is passed to the same specified parameter of the called template (the "variable parameter"). Optionally, pre- and postfixes can be attached to the passed values.
In addition to the specified variable parameter, other parameters of the called template ("static parameters") can be given a value which is the same in each iteration.
Usage
Group | Parameter | Meaning | Default value |
---|---|---|---|
Mandatory | 1 (unnamed) | separator to output between calls (may be blank; whitespace is preserved) | |
call | template to call | ||
pv | name (or number) of the variable parameter of the called template | 1 | |
Option 1: iterated sequence | start | first numeric value to pass to variable parameter | 1 |
stop | maximum numeric value for variable parameter | ||
by | iteration step size between values passed to variable parameter | 1 | |
Option 2: explicit values | (unnamed parameters) | explicit values, given as separate parameters (whitespace is stripped) | |
skipBlanks | set to "true" to skip empty parameter values | false | |
Other optional parameters | pc[N]n | name (or number) of the Nth static parameter of the called template | |
pc[N]v | value for the Nth static parameter of the called template | ||
prefix | static prefix prepended to each value passed to the variable parameter | ||
postfix | static postfix appended to each value passed to the variable parameter | ||
substall | set to "false" to not substitute the called template when {{}} is substituted | true |
Either option 1 (iteration parameters) or option 2 (an explicit list of values) may be used, but not both.
The first unnamed parameter, prior to any explicit values, is a separator. The separator is a string that is output between calls to the template named in |call=
. It is not output after the last call.
Caution
- The separator can be prefixed with "1=", but in that case it cannot contain newlines and spaces at the start and end.
- If any parameter value contains an equals sign, use
{{}}
(see ). - If you use named parameters, note that the first value is parameter 2 (e.g.
|2=Your1stValue
), because parameter 1 is the separator. - If you use named parameters, you must not skip any numbers. The loop will terminate after the first absent numbered parameter. (Parameters can be blank, but not absent.)
Substitution
The current Lua-based template supports . If |substall=no
is not specified, then substituting the template will substitute everything, including the call to the template passed in |call=
. If it is specified, then the template substitutes into a sequence of calls to the template specified.
Example: {{|sep|01|02|03|04|05|06|07|call=1x}}
-> 01sep 02sep 03sep 04sep 05sep 06sep 07
, {{|sep|01|02|03|04|05|06|07|substall=no}}
-> {{1x|01}}sep {{1x|02}}sep {{1x|03}}sep {{1x|04}}sep {{1x|05}}sep {{1x|06}}sep {{1x|07}}
For full substitution can also be used.
Examples
Form | Code | Explanation | Result |
---|---|---|---|
Iterator | {{for loop|&|call = spanbox |pv = font size |start=10|stop=52|by=8 |postfix = px |pc1n = 1 |pc1v = A |pc2n = background |pc2v = yellow }} | Call the template "spanbox" with values:
Separating outputs with "&" | ข้อผิดพลาด Lua: expandTemplate: template "spanbox" does not exist |
Explicit values | {{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 }} | Call the template "1x" with values "1[NN]", where NN = "00" through "99" (given explicitly), separating the outputs with the string ", " | 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 |
Other examples with explicit values
{{for loop|-|a|3||c|g|call=3x}}
using {{}} gives
ข้อผิดพลาด Lua: expandTemplate: template "3x" does not exist
{{for loop|
|a|3||c|g|call=3x}}
gives
ข้อผิดพลาด Lua: expandTemplate: template "3x" does not exist
{|class="wikitable sortable" |- !Test |- | {{for loop| {{!}}- {{!}} |a|b|c|d|e|call=3x}} |}
gives:
Test |
---|
ข้อผิดพลาด Lua: expandTemplate: template "3x" does not exist |
{{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}}
gives:
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
gives:
begin->01= 02= 03= 04= 05= 06= 07= 08= 09= 10= 11==== 12= 13= 14= 15= 16= 17= 18= 19<-end
Notes about legacy codes
This template is currently in its third incarnation. It now uses the code at . It was ported to Lua from ParserFunctions. There was also a previous version with a named "sep" parameter to specify the separator value. The template was originally based on Template:For on meta. The template name was changed because there was already a .
The old versions were limited to 150 variable values and four fixed parameters. There are no such limits in the current version. Also, in the first version the "sep" parameter didn't allow whitespace in the separator value. This was fixed with the second version and was retained in the current version.
See also
- mw:Template:Fe
- mw:Template:foreach
- m:แม่แบบ:tblb (backlinks edit)
- {{}}
- {{}}
- {{}}
- {{}}
- mw:Extension:LoopFunctions
คู่มือการใช้งานที่ปรากฏด้านบนนี้ดึงมาจาก (มอดูล:ForLoop/doc) (แก้ | ประวัติ) ผู้เขียนสามารถทำการทดลองได้ที่(กระบะทราย) (แก้ | ดูความแตกต่าง) และชุดทดสอบ (สร้าง) ของมอดูลนี้ |
-- This module implements {{for loop}}. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local p = {} function p.main(frame) local args = getArgs(frame, { trim = false, removeBlanks = false }) return p._main(args) end function p._main(args) local template = args['call'] or 'void' local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting() local variableParam = args.pv variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters local variableValPrefix = args.prefix or '' local variableValPostfix = args.postfix or '' local sep = args[1] or '' local constantArgs = p.getConstants(args) local variableVals = p.getVariableVals(args) local result = '' local addSeparator = false; for _, v in ipairs(variableVals) do v = mw.text.trim(v) if #v > 0 or not yesno(args.skipBlanks) then if addSeparator then result = result .. sep end addSeparator = true; local targs = constantArgs targs[variableParam] = variableValPrefix .. v .. variableValPostfix if calltemplates then local output = p.callTemplate(template, targs) if #mw.text.trim(output) == 0 then addSeparator = false end result = result .. output else local makeTemplate = require('Module:Template invocation').invocation result = result .. makeTemplate(template, targs) end end end return result end function p.getConstants(args) local constantArgNums = p.getArgNums(args, 'pc', 'n') local constantArgs = {} for _, num in ipairs(constantArgNums) do local keyArg = 'pc' .. tostring(num) .. 'n' local valArg = 'pc' .. tostring(num) .. 'v' local key = args[keyArg] key = tonumber(key) or key local value = args[valArg] constantArgs[key] = value end return constantArgs end function p.getVariableVals(args) local variableVals = {} if args.start or args.stop or args.by then if args[2] then error("Both start/stop/by and numbered parameters specified") end local start = tonumber(args.start or 1) local stop = tonumber(args.stop or 1) local by = tonumber(args.by or 1) for i = start, stop, by do variableVals [#variableVals + 1] = i end else for i, v in ipairs(args) do if i ~= 1 then variableVals[i - 1] = v end end end return variableVals end function p.getArgNums(args, prefix, suffix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix and suffix. local nums = {} local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' for k, _ in pairs(args) do local num = tostring(k):match(pattern) if num then nums[#nums + 1] = tonumber(num) end end table.sort(nums) return nums end function p.callTemplate(template, targs) return mw.getCurrentFrame():expandTemplate{title = template, args = targs} end return p
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
niepnmxdulthithukpxngknthawrenuxngcakmikhwamesiyngsung krunaxphipraykarepliynaeplngid thanghnakhuy khunxacsngkhakhxaekikh ipyngphuduaelrabbephuxihaekikhidhakepnkaraekikhthiimmikarkhdkhanhruxmikhwamehnphxngsnbsnun khunyngsamarthkhxihelikpxngknhnaidkhumuxkarichnganmxdul du aek prawti langaekhch mxdulnikhunxyukbmxdulxun dngtxipniModule ForLoop krabathray This template implements a or a This template calls a user specified template the called template multiple times once for each value in either 1 an iterated sequence or 2 an explicit list Each value in the sequence or list is passed to the same specified parameter of the called template the variable parameter Optionally pre and postfixes can be attached to the passed values In addition to the specified variable parameter other parameters of the called template static parameters can be given a value which is the same in each iteration Usage Group Parameter Meaning Default valueMandatory 1 unnamed separator to output between calls may be blank whitespace is preserved call template to callpv name or number of the variable parameter of the called template 1Option 1 iterated sequence start first numeric value to pass to variable parameter 1stop maximum numeric value for variable parameterby iteration step size between values passed to variable parameter 1Option 2 explicit values unnamed parameters explicit values given as separate parameters whitespace is stripped skipBlanks set to true to skip empty parameter values falseOther optional parameters pc N n name or number of the Nth static parameter of the called templatepc N v value for the Nth static parameter of the called templateprefix static prefix prepended to each value passed to the variable parameterpostfix static postfix appended to each value passed to the variable parametersubstall set to false to not substitute the called template when for loop is substituted true Either option 1 iteration parameters or option 2 an explicit list of values may be used but not both The first unnamed parameter prior to any explicit values is a separator The separator is a string that is output between calls to the template named in call It is not output after the last call Caution The separator can be prefixed with 1 but in that case it cannot contain newlines and spaces at the start and end If any parameter value contains an equals sign use a href wiki E0 B9 81 E0 B8 A1 E0 B9 88 E0 B9 81 E0 B8 9A E0 B8 9A 3D title aemaebb a see If you use named parameters note that the first value is parameter 2 e g 2 Your1stValue because parameter 1 is the separator If you use named parameters you must not skip any numbers The loop will terminate after the first absent numbered parameter Parameters can be blank but not absent Substitution The current Lua based template supports If substall no is not specified then substituting the template will substitute everything including the call to the template passed in call If it is specified then the template substitutes into a sequence of calls to the template specified Example a href wiki E0 B9 81 E0 B8 A1 E0 B9 88 E0 B9 81 E0 B8 9A E0 B8 9A For loop title aemaebb For loop subst for loop a sep 01 02 03 04 05 06 07 call 1x gt 01sep 02sep 03sep 04sep 05sep 06sep 07 a href wiki E0 B9 81 E0 B8 A1 E0 B9 88 E0 B9 81 E0 B8 9A E0 B8 9A For loop title aemaebb For loop subst for loop a sep 01 02 03 04 05 06 07 substall no gt 1x 01 sep 1x 02 sep 1x 03 sep 1x 04 sep 1x 05 sep 1x 06 sep 1x 07 For full substitution Special ExpandTemplates can also be used Examples Form Code Explanation ResultIterator for loop amp call spanbox pv font size start 10 stop 52 by 8 postfix px pc1n 1 pc1v A pc2n background pc2v yellow Call the template spanbox with values font size N px where N takes values starting with 10 and increasing by 8 while remaining less than or equal to 52 1 first unnamed parameter A background yellow Separating outputs with amp khxphidphlad Lua expandTemplate template spanbox does not existExplicit values 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 Call the template 1x with values 1 NN where NN 00 through 99 given explicitly separating the outputs with the string 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 199Other examples with explicit values for loop a 3 c g call 3x using gives khxphidphlad Lua expandTemplate template 3x does not exist for loop a 3 c g call 3x gives khxphidphlad Lua expandTemplate template 3x does not exist class wikitable sortable Test for loop a b c d e call 3x gives Testkhxphidphlad Lua expandTemplate template 3x does not exist 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 gives 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 gt for loop 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 call 1x lt end gives begin gt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 lt end Notes about legacy codes This template is currently in its third incarnation It now uses the code at It was ported to Lua from ParserFunctions There was also a previous version with a named sep parameter to specify the separator value The template was originally based on Template For on meta The template name was changed because there was already a Template For on Wikipedia The old versions were limited to 150 variable values and four fixed parameters There are no such limits in the current version Also in the first version the sep parameter didn t allow whitespace in the separator value This was fixed with the second version and was retained in the current version See also mw Template Fe mw Template foreach m aemaebb tblb backlinks edit item loop mw Extension LoopFunctionskhumuxkarichnganthipraktdanbnnidungmacak mxdul ForLoop doc aek prawti phuekhiynsamarththakarthdlxngidthikrabathray aek dukhwamaetktang aelachudthdsxb srang khxngmxdulni hnayxykhxngmxdulni This module implements for loop local getArgs require Module Arguments getArgs local yesno require Module Yesno local p function p main frame local args getArgs frame trim false removeBlanks false return p main args end function p main args local template args call or void local calltemplates yesno args substall or true or not mw isSubsting local variableParam args pv variableParam tonumber variableParam or variableParam or 1 fix for positional parameters local variableValPrefix args prefix or local variableValPostfix args postfix or local sep args 1 or local constantArgs p getConstants args local variableVals p getVariableVals args local result local addSeparator false for v in ipairs variableVals do v mw text trim v if v gt 0 or not yesno args skipBlanks then if addSeparator then result result sep end addSeparator true local targs constantArgs targs variableParam variableValPrefix v variableValPostfix if calltemplates then local output p callTemplate template targs if mw text trim output 0 then addSeparator false end result result output else local makeTemplate require Module Template invocation invocation result result makeTemplate template targs end end end return result end function p getConstants args local constantArgNums p getArgNums args pc n local constantArgs for num in ipairs constantArgNums do local keyArg pc tostring num n local valArg pc tostring num v local key args keyArg key tonumber key or key local value args valArg constantArgs key value end return constantArgs end function p getVariableVals args local variableVals if args start or args stop or args by then if args 2 then error Both start stop by and numbered parameters specified end local start tonumber args start or 1 local stop tonumber args stop or 1 local by tonumber args by or 1 for i start stop by do variableVals variableVals 1 i end else for i v in ipairs args do if i 1 then variableVals i 1 v end end end return variableVals end function p getArgNums args prefix suffix Returns a table containing the numbers of the arguments that exist for the specified prefix and suffix local nums local pattern prefix 1 9 d suffix for k in pairs args do local num tostring k match pattern if num then nums nums 1 tonumber num end end table sort nums return nums end function p callTemplate template targs return mw getCurrentFrame expandTemplate title template args targs end return p