import{_ as e,c as a,o as t,a4 as _}from"./chunks/framework.Cy9JvDAg.js";const h=JSON.parse('{"title":"4.2 - C闭包","description":"","frontmatter":{"title":"4.2 - C闭包","footer":true,"lastUpdated":true,"outline":false},"headers":[],"relativePath":"4.2.md","filePath":"4.2.md"}'),l={name:"4.2.md"},u=_('<h2 id="_4-2-c闭包" tabindex="-1">4.2 - C闭包 <a class="header-anchor" href="#_4-2-c闭包" aria-label="Permalink to &quot;4.2 - C闭包&quot;">​</a></h2><p>当C函数被创建，它可能要关联上一些值，以创建一个<em>C闭包</em>（参见<a href="/lua5.4-manual-zh/4.6.html#lua_pushcclosure">lua_pushcclosure</a>）；这些值被称为<em>上值 upvalues</em>，在调用函数的时候可以访问它们。</p><p>当C函数被调用，其上值处于特殊的伪索引上。这些伪索引由<a href="/lua5.4-manual-zh/4.6.html#lua_upvalueindex">lua_upvalueindex</a>宏创建。函数关联的第一个上值在lua_upvalueindex(1)索引上，以此类推。任意对lua_upvalueindex(<em>n</em>)的访问中，如果<em>n</em>大于当前函数的上值数量（但是不能大于256——闭包上值的最大数量加一），会产生一个可接受但无效的索引。</p><p>C闭包也可以更改其相关上值的值。</p>',4),o=[u];function r(n,s,c,p,i,d){return t(),a("div",null,o)}const f=e(l,[["render",r]]);export{h as __pageData,f as default};
