<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.vupslash.icu/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ALoop</id>
	<title>模块:Loop - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vupslash.icu/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ALoop"/>
	<link rel="alternate" type="text/html" href="https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;action=history"/>
	<updated>2026-04-16T19:34:13Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=360&amp;oldid=prev</id>
		<title>2022年4月12日 (二) 02:57 似然可绘</title>
		<link rel="alternate" type="text/html" href="https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=360&amp;oldid=prev"/>
		<updated>2022-04-12T02:57:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年4月12日 (二) 10:57的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l102&quot;&gt;第102行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第102行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local result = &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local result = &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if type(args[2]) == &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0 &lt;/del&gt;and _min &amp;gt; _max and addend &amp;gt; 0 then addend = -1 end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if type(args[2]) == &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;nil&amp;#039; &lt;/ins&gt;and _min &amp;gt; _max and addend &amp;gt; 0 then addend = -1 end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for i=_min, _max, addend do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for i=_min, _max, addend do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         frame:callParserFunction(&amp;#039;#vardefine&amp;#039;, name, i)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         frame:callParserFunction(&amp;#039;#vardefine&amp;#039;, name, i)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key VupSlashWiki:diff::1.12:old-359:rev-360 --&gt;
&lt;/table&gt;</summary>
		<author><name>似然可绘</name></author>
	</entry>
	<entry>
		<id>https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=359&amp;oldid=prev</id>
		<title>2022年4月12日 (二) 02:55 似然可绘</title>
		<link rel="alternate" type="text/html" href="https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=359&amp;oldid=prev"/>
		<updated>2022-04-12T02:55:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年4月12日 (二) 10:55的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l102&quot;&gt;第102行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第102行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local result = &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     local result = &amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if type(args[2]) == &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;nil&amp;#039; &lt;/del&gt;and _min &amp;gt; _max and addend &amp;gt; 0 then addend = -1 end&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     if type(args[2]) == &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0 &lt;/ins&gt;and _min &amp;gt; _max and addend &amp;gt; 0 then addend = -1 end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for i=_min, _max, addend do&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for i=_min, _max, addend do&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         frame:callParserFunction(&amp;#039;#vardefine&amp;#039;, name, i)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         frame:callParserFunction(&amp;#039;#vardefine&amp;#039;, name, i)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>似然可绘</name></author>
	</entry>
	<entry>
		<id>https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=356&amp;oldid=prev</id>
		<title>似然可绘：​创建页面，内容为“local module = {}  local getArgs = require(&#039;Module:Arguments&#039;).getArgs  local nowiki_blocks = { &#039;do&#039;, &#039;condition&#039; }  function pack_inner_loop(loop)     -- 给内层循环的do参数包裹&lt;nowiki&gt;标签     loop = mw.ustring.gsub(loop, &#039;{{%s-[Ll]oop%s-|&#039;, &#039;{{#invoke:loop|loop|&#039;)     loop = mw.ustring.gsub(loop, &#039;{{%s-[Ww]hile%s-|&#039;, &#039;{{#invoke:loop|while|&#039;)     loop = mw.ustring.gsub(loop, &#039;{{%s-[Dd]o[Ww]hile%s-|&#039;, &#039;{{#invoke:loop|dowhile|&#039;)     return mw.ustring…”</title>
		<link rel="alternate" type="text/html" href="https://wiki.vupslash.icu/index.php?title=%E6%A8%A1%E5%9D%97:Loop&amp;diff=356&amp;oldid=prev"/>
		<updated>2022-04-12T02:52:01Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“local module = {}  local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs  local nowiki_blocks = { &amp;#039;do&amp;#039;, &amp;#039;condition&amp;#039; }  function pack_inner_loop(loop)     -- 给内层循环的do参数包裹&amp;lt;nowiki&amp;gt;标签     loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Ll]oop%s-|&amp;#039;, &amp;#039;{{#invoke:loop|loop|&amp;#039;)     loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Ww]hile%s-|&amp;#039;, &amp;#039;{{#invoke:loop|while|&amp;#039;)     loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Dd]o[Ww]hile%s-|&amp;#039;, &amp;#039;{{#invoke:loop|dowhile|&amp;#039;)     return mw.ustring…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local module = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local nowiki_blocks = { &amp;#039;do&amp;#039;, &amp;#039;condition&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
function pack_inner_loop(loop)&lt;br /&gt;
    -- 给内层循环的do参数包裹&amp;lt;nowiki&amp;gt;标签&lt;br /&gt;
    loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Ll]oop%s-|&amp;#039;, &amp;#039;{{#invoke:loop|loop|&amp;#039;)&lt;br /&gt;
    loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Ww]hile%s-|&amp;#039;, &amp;#039;{{#invoke:loop|while|&amp;#039;)&lt;br /&gt;
    loop = mw.ustring.gsub(loop, &amp;#039;{{%s-[Dd]o[Ww]hile%s-|&amp;#039;, &amp;#039;{{#invoke:loop|dowhile|&amp;#039;)&lt;br /&gt;
    return mw.ustring.gsub(loop, &amp;#039;({{#invoke:loop.*)&amp;#039;, function(a)&lt;br /&gt;
        local i = 1&lt;br /&gt;
        local stack = {}&lt;br /&gt;
        local block_begin = -1&lt;br /&gt;
        local block_end = -1&lt;br /&gt;
        while (i &amp;lt; mw.ustring.len(a)) do&lt;br /&gt;
        	for _, block in ipairs(nowiki_blocks) do&lt;br /&gt;
	            if block_begin == -1 and mw.ustring.find(a, &amp;#039;^|%s-&amp;#039;..block..&amp;#039;%s-=&amp;#039;, i) then&lt;br /&gt;
	                _, block_begin = mw.ustring.find(a, &amp;#039;^|%s-&amp;#039;..block..&amp;#039;%s-=&amp;#039;, i)&lt;br /&gt;
	                block_begin = block_begin + 1&lt;br /&gt;
	                i = block_begin&lt;br /&gt;
	                &lt;br /&gt;
	                break&lt;br /&gt;
	            end&lt;br /&gt;
	        end&lt;br /&gt;
            if block_begin ~= -1 then&lt;br /&gt;
                if mw.ustring.sub(a, i, i + 2) == &amp;#039;{{{&amp;#039; then&lt;br /&gt;
                    i = i + 3&lt;br /&gt;
                    table.insert(stack, 3)&lt;br /&gt;
                elseif mw.ustring.sub(a, i, i + 1) == &amp;#039;{{&amp;#039; then&lt;br /&gt;
                    i = i + 2&lt;br /&gt;
                    table.insert(stack, 2)&lt;br /&gt;
                elseif mw.ustring.sub(a, i, i + 2) == &amp;#039;}}}&amp;#039; then&lt;br /&gt;
                    if #stack ~= 0 and stack[#stack] == 3 then&lt;br /&gt;
                        i = i + 3&lt;br /&gt;
                        table.remove(stack)&lt;br /&gt;
                    elseif #stack ~= 0 and stack[#stack] == 2 then&lt;br /&gt;
                        i = i + 2&lt;br /&gt;
                        table.remove(stack)&lt;br /&gt;
                    else&lt;br /&gt;
                        block_end = i - 1&lt;br /&gt;
                        break&lt;br /&gt;
                    end&lt;br /&gt;
                elseif mw.ustring.sub(a, i, i + 1) == &amp;#039;}}&amp;#039; then&lt;br /&gt;
                    if #stack ~= 0 then&lt;br /&gt;
                        i = i + 2&lt;br /&gt;
                        table.remove(stack)&lt;br /&gt;
                    else&lt;br /&gt;
                        block_end = i - 1&lt;br /&gt;
                        break&lt;br /&gt;
                    end&lt;br /&gt;
                elseif mw.ustring.sub(a, i, i) == &amp;#039;|&amp;#039; and #stack == 0 then&lt;br /&gt;
                    block_end = i - 1&lt;br /&gt;
                    break&lt;br /&gt;
                else&lt;br /&gt;
                    i = i + 1&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                i = i + 1&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if block_begin ~= -1 and block_end == -1 then block_end = i - 1 end&lt;br /&gt;
        if block_begin ~= -1 and block_end ~= -1 then&lt;br /&gt;
        -- mw.log(&amp;#039;发现内层循环 &amp;lt;nowiki&amp;gt;&amp;#039;..mw.ustring.sub(a, block_begin, block_end)..&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;#039;)&lt;br /&gt;
        return mw.ustring.sub(a, 1, block_begin - 1)..&amp;#039;&amp;lt;nowiki&amp;gt;&amp;#039;..&lt;br /&gt;
               mw.text.trim(mw.ustring.sub(a, block_begin, block_end))..&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;#039;..&lt;br /&gt;
               pack_inner_loop(mw.ustring.sub(a, block_end + 1, -1))&lt;br /&gt;
        else&lt;br /&gt;
            return a&lt;br /&gt;
        end&lt;br /&gt;
    end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function _loop(args, frame)&lt;br /&gt;
    local name = &amp;#039;&amp;#039;&lt;br /&gt;
    local _min = 1&lt;br /&gt;
    local _max = tonumber(args[&amp;#039;max&amp;#039;] or args[1] or 10)&lt;br /&gt;
    local addend = tonumber(args[2] or 1)&lt;br /&gt;
    local loop = args[&amp;#039;do&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
    loop = mw.text.unstripNoWiki(loop)&lt;br /&gt;
    loop = string.gsub(loop, &amp;#039;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    loop = pack_inner_loop(loop)&lt;br /&gt;
    local trim = mw.text.split(loop, &amp;#039;\n&amp;#039;)&lt;br /&gt;
    loop = &amp;#039;&amp;#039;&lt;br /&gt;
    for i, v in ipairs(trim) do&lt;br /&gt;
        loop = loop..mw.text.trim(v)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for k, v in pairs(args) do&lt;br /&gt;
        if(k ~= &amp;#039;do&amp;#039; and k ~= &amp;#039;max&amp;#039; and k ~= 1 and k ~= 2) then&lt;br /&gt;
            name = string.gsub(k, &amp;#039;([%%%(%)%.%+%-%*%?%[%]%^%$])&amp;#039;, &amp;#039;%%%1&amp;#039;)&lt;br /&gt;
            _min = tonumber(v)&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if name == &amp;#039;&amp;#039; then error(&amp;#039;必须设置自增/自减的变量名！&amp;#039;) end&lt;br /&gt;
&lt;br /&gt;
    loop = mw.text.decode(loop)&lt;br /&gt;
    -- mw.log(&amp;#039;循环体= &amp;#039;..loop)&lt;br /&gt;
&lt;br /&gt;
    local result = &amp;#039;&amp;#039;&lt;br /&gt;
    if type(args[2]) == &amp;#039;nil&amp;#039; and _min &amp;gt; _max and addend &amp;gt; 0 then addend = -1 end&lt;br /&gt;
    for i=_min, _max, addend do&lt;br /&gt;
        frame:callParserFunction(&amp;#039;#vardefine&amp;#039;, name, i)&lt;br /&gt;
        -- mw.log(&amp;#039;执行循环体(&amp;#039;..name..&amp;#039;=&amp;#039;..tostring(i)..&amp;#039;) &amp;#039;..loop)&lt;br /&gt;
        result = result..frame:preprocess(loop)&lt;br /&gt;
    end&lt;br /&gt;
    -- mw.log(&amp;#039;循环结果 &amp;#039;..result)&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.loop(frame)&lt;br /&gt;
    if (frame:getParent() or frame):getTitle() == &amp;#039;Template:Loop&amp;#039; and&lt;br /&gt;
        frame.args[&amp;#039;do&amp;#039;] == nil then&lt;br /&gt;
        args = getArgs(frame)&lt;br /&gt;
    else&lt;br /&gt;
        args = frame.args&lt;br /&gt;
    end&lt;br /&gt;
    return _loop(args, frame:getParent() or frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 向后兼容&lt;br /&gt;
function module.main(frame)&lt;br /&gt;
    return module.loop(frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 别名&lt;br /&gt;
module[&amp;quot;for&amp;quot;] = function(frame)&lt;br /&gt;
    return module.loop(frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _while = function(args, frame, dowhile)&lt;br /&gt;
    --初步处理条件语句&lt;br /&gt;
    local condition = args[&amp;#039;condition&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
    condition = mw.text.unstripNoWiki(condition)&lt;br /&gt;
    condition = string.gsub(condition, &amp;#039;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    --修整条件语句的格式&lt;br /&gt;
    local trim = mw.text.split(condition, &amp;#039;\n&amp;#039;)&lt;br /&gt;
    condition = &amp;#039;&amp;#039;&lt;br /&gt;
    for i, v in ipairs(trim) do&lt;br /&gt;
        condition = condition..mw.text.trim(v)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    condition = mw.text.decode(condition)&lt;br /&gt;
    -- mw.log(&amp;#039;循环体= &amp;#039;..condition)&lt;br /&gt;
    &lt;br /&gt;
    --初步处理循环体&lt;br /&gt;
    local loop = args[&amp;#039;do&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
    loop = mw.text.unstripNoWiki(loop)&lt;br /&gt;
    loop = string.gsub(loop, &amp;#039;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    --处理循环体中的次级循环语句&lt;br /&gt;
    loop = pack_inner_loop(loop)&lt;br /&gt;
    --修整循环体中语句的格式&lt;br /&gt;
    local trim = mw.text.split(loop, &amp;#039;\n&amp;#039;)&lt;br /&gt;
    loop = &amp;#039;&amp;#039;&lt;br /&gt;
    for i, v in ipairs(trim) do&lt;br /&gt;
        loop = loop..mw.text.trim(v)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    loop = mw.text.decode(loop)&lt;br /&gt;
    -- mw.log(&amp;#039;循环体= &amp;#039;..loop)&lt;br /&gt;
&lt;br /&gt;
    local result = &amp;#039;&amp;#039;&lt;br /&gt;
    if dowhile then&lt;br /&gt;
        -- mw.log(&amp;#039;执行循环体(&amp;#039;..name..&amp;#039;=&amp;#039;..tostring(i)..&amp;#039;) &amp;#039;..loop)&lt;br /&gt;
        repeat result = result..frame:preprocess(loop) until frame:preprocess(condition) == &amp;#039;&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- mw.log(&amp;#039;执行循环体(&amp;#039;..name..&amp;#039;=&amp;#039;..tostring(i)..&amp;#039;) &amp;#039;..loop)&lt;br /&gt;
        while frame:preprocess(condition) ~= &amp;#039;&amp;#039; do result = result..frame:preprocess(loop) end&lt;br /&gt;
    end&lt;br /&gt;
    -- mw.log(&amp;#039;循环结果 &amp;#039;..result)&lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
module[&amp;quot;while&amp;quot;] = function(frame)&lt;br /&gt;
    if (frame:getParent() or frame):getTitle() == &amp;#039;Template:While&amp;#039; and&lt;br /&gt;
        frame.args[&amp;#039;do&amp;#039;] == nil then&lt;br /&gt;
        args = getArgs(frame)&lt;br /&gt;
    else&lt;br /&gt;
        args = frame.args&lt;br /&gt;
    end&lt;br /&gt;
    return _while(args, frame:getParent() or frame, false)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
module.dowhile = function(frame)&lt;br /&gt;
    if (frame:getParent() or frame):getTitle() == &amp;#039;Template:While&amp;#039; and&lt;br /&gt;
        frame.args[&amp;#039;do&amp;#039;] == nil then&lt;br /&gt;
        args = getArgs(frame)&lt;br /&gt;
    else&lt;br /&gt;
        args = frame.args&lt;br /&gt;
    end&lt;br /&gt;
    return _while(args, frame:getParent() or frame, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.fornumargs(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local prefix = mw.text.trim(args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local numname = mw.text.trim(args[2] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local valname = mw.text.trim(args[3] or &amp;#039;&amp;#039;)&lt;br /&gt;
	local cond = mw.text.decode(mw.text.unstripNoWiki(mw.text.trim(args.cond or &amp;#039;&amp;#039;)))&lt;br /&gt;
	local text = mw.text.decode(mw.text.unstripNoWiki(mw.text.trim(args[4] or &amp;#039;&amp;#039;)))&lt;br /&gt;
	if not parent or numname == &amp;#039;&amp;#039; or valname == &amp;#039;&amp;#039; or text == &amp;#039;&amp;#039; then return &amp;#039;&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
	local expr = &amp;#039;^&amp;#039; .. mw.ustring.gsub(prefix, &amp;#039;([-+*?%%])&amp;#039;, &amp;#039;%%%1&amp;#039;) .. &amp;#039;(%d+)$&amp;#039;&lt;br /&gt;
	local keys = {}&lt;br /&gt;
	local output = {}&lt;br /&gt;
	for key, _ in pairs(parent.args) do&lt;br /&gt;
		local num = mw.ustring.match(key, expr)&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(keys, tonumber(num))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(keys)&lt;br /&gt;
	for _, idx in ipairs(keys) do&lt;br /&gt;
		parent:callParserFunction(&amp;#039;#vardefine&amp;#039;, numname, idx)&lt;br /&gt;
		parent:callParserFunction(&amp;#039;#vardefine&amp;#039;, valname, parent.args[prefix .. idx])&lt;br /&gt;
		if cond == &amp;#039;&amp;#039; or parent:preprocess(cond) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			table.insert(output, parent:preprocess(text))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>似然可绘</name></author>
	</entry>
</feed>