import{_ as a,c as t,o as e,a4 as l}from"./chunks/framework.Cy9JvDAg.js";const m=JSON.parse('{"title":"6.6 - 表操作","description":"","frontmatter":{"title":"6.6 - 表操作","footer":true,"lastUpdated":true,"outline":"deep"},"headers":[],"relativePath":"6.6.md","filePath":"6.6.md"}'),s={name:"6.6.md"},i=l('<h2 id="_6-6-表操作" tabindex="-1">6.6 - 表操作 <a class="header-anchor" href="#_6-6-表操作" aria-label="Permalink to &quot;6.6 - 表操作&quot;">​</a></h2><p>本库提供了对表进行操作的通用函数，所有提供的函数都放在名为 table 的表中。</p><p>请记住，对于任何需要表长度的操作，之前说的取长操作符相关的规则都适用（参见<a href="/lua5.4-manual-zh/3.4.7.html">3.4.7</a>）。所有的函数都会忽略给出的表中的非数字键。</p><h3 id="table.concat" tabindex="-1">table.concat (list [, sep [, i [, j]]]) <a class="header-anchor" href="#table.concat" aria-label="Permalink to &quot;table.concat (list [, sep [, i [, j]]]) {#table.concat}&quot;">​</a></h3><p>给定一个列表，其所有的元素都是字符串或数字，返回等效于 list[i]..sep..list[i+1] ··· sep..list[j] 的结果。参数 sep 默认为空字符串，i 默认为1，j 默认等于 #list 。如果 i 大于 j ，则返回空字符串。</p><h3 id="table.insert" tabindex="-1">table.insert (list, [pos,] value) <a class="header-anchor" href="#table.insert" aria-label="Permalink to &quot;table.insert (list, \\[pos,\\] value) {#table.insert}&quot;">​</a></h3><p>将 value 作为元素插入到列表 list 中的 pos 位置，顺移后边的元素 list[pos], list[pos+1], ···, list[#list] 。参数 pos 默认等于 #list+1 ，因此 table.insert(t,x) 会将 x 插入到列表 t 中。</p><h3 id="table.move" tabindex="-1">table.move (a1, f, e, t [,a2]) <a class="header-anchor" href="#table.move" aria-label="Permalink to &quot;table.move (a1, f, e, t \\[,a2\\]) {#table.move}&quot;">​</a></h3><p>将表 a1 中的元素移入到表 a2 中，等效于执行多重赋值：a2[t],··· = a1[f],···,a1[e] ，所以当 a1 和 a2 不是同一个表时，a1 是不会发生变动的。其中参数 a2 默认等于 a1 。目标范围可以和源范围重叠。要移动的下标的值在Lua中必须是个整数。</p><p>返回目标表 a2。</p><h3 id="table.pack" tabindex="-1">table.pack (···) <a class="header-anchor" href="#table.pack" aria-label="Permalink to &quot;table.pack (···) {#table.pack}&quot;">​</a></h3><p>返回一个新表，其先后将所接收到的所有参数存储到数字键 1、2、3……等等中，并将参数数量作为字段 &quot;n&quot; 的值。 要注意，当有些参数值为<strong>nil</strong>时，其返回的表不一定是个序列。</p><h3 id="table.remove" tabindex="-1">table.remove (list [, pos]) <a class="header-anchor" href="#table.remove" aria-label="Permalink to &quot;table.remove (list [, pos]) {#table.remove}&quot;">​</a></h3><p>移除列表 list 中位于 pos 的元素，返回被移除的元素的值。当 pos 的值处于1到 #list 之间时，会先后顺移后边的元素 list[pos+1], list[pos+2], ···, list[#list] 并且移除元素 list[#list];当 #list 为0时参数 pos 可以为0，也可以为 #list + 1 。</p><p>参数 pos 默认等于 #list ，因此调用 table.remove(l) 会移除列表 l 中的最后一个元素。</p><h3 id="table.sort" tabindex="-1">table.sort (list [, comp]) <a class="header-anchor" href="#table.sort" aria-label="Permalink to &quot;table.sort (list [, comp]) {#table.sort}&quot;">​</a></h3><p>将列表中从 list[1] 到 list[#list] 的元素按照给出的顺序<em>就地</em>排序。如果给出了参数 comp ，其必须是一个函数，该接收两个列表元素，并判断两个元素的相对位置，如果需要第一个元素在第二个元素之前，则返回<strong>true</strong>，因此在排完序后，对于索引 i &lt;= j ，comp(list[i], list[j]) 的结果为真。如果参数 comp 未给出，那么会使用Lua标准操作符 &lt; 代替。</p><p>函数 comp 必须定义一个绝对的顺序；更正式的说法是，该函数必须排序稳定。（弱排序看似是个完整的排序，但它可能在比较中认为两个不同的元素相等。）</p><p>排序逻辑不稳定的意思是：两个在次序上相等的不同元素，在排序完成后可能会使得两个元素的相对位置发生改变。</p><h3 id="table.unpack" tabindex="-1">table.unpack (list [, i [, j]]) <a class="header-anchor" href="#table.unpack" aria-label="Permalink to &quot;table.unpack (list [, i [, j]]) {#table.unpack}&quot;">​</a></h3><p>依次返回给定列表中的元素。该函数等效于：</p><div class="language-lua vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">lua</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list[i], list[i</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], ···, list[j]</span></span></code></pre></div><p>参数 i 默认为，j 默认等于 #list 。</p>',23),o=[i];function p(r,n,h,c,b,d){return e(),t("div",null,o)}const k=a(s,[["render",p]]);export{m as __pageData,k as default};
