import{_ as a,c as l,o as e,a4 as t}from"./chunks/framework.Cy9JvDAg.js";const c=JSON.parse('{"title":"6 - 标准库","description":"","frontmatter":{"title":"6 - 标准库","footer":true,"lastUpdated":true,"outline":false},"headers":[],"relativePath":"6.md","filePath":"6.md"}'),u={name:"6.md"},n=t('<h1 id="_6-标准库" tabindex="-1">6 - 标准库 <a class="header-anchor" href="#_6-标准库" aria-label="Permalink to &quot;6 - 标准库&quot;">​</a></h1><p>Lua标准标准库提供了一些有用的函数，这些函数是通过 C API 实现在C代码中的。其中有些函数为语言提供了基础服务（如<a href="/lua5.4-manual-zh/6.1.html#type">type</a>和<a href="/lua5.4-manual-zh/6.1.html#getmetatable">getmetatable</a>）；有些函数提供了外部服务（例如 I/O 相关）；有些函数其实也可以Lua代码中实现，但是因为各种原因其更适合在C中实现（例如<a href="/lua5.4-manual-zh/6.6.html#table.sort">table.sort</a>）。</p><p>所有的库函数都是通过Lua官方的 C API 实现的，并以独立的 C 模块形式提供。一般情况下，库中的函数是不会将参数的数量调整到其预期的参数列表的。在文档中形如 foo(arg) 的函数在使用的时候就不应当缺省参数。</p><p>符号<strong>fail</strong>的意为一个表示某种错误的假值。（目前<strong>fail</strong>还是等于<strong>nil</strong>，但是在未来版本中可能发生变更。推荐在判断它时使用 (not status) 的形式而不是 (status == nil) 。）</p><p>到目前为止，Lua中有这些标准库：</p><ul><li>基础库（参见<a href="/lua5.4-manual-zh/6.1.html">6.1</a>）；</li><li>协程库（参见<a href="/lua5.4-manual-zh/6.2.html">6.2</a>）；</li><li>包（参见<a href="/lua5.4-manual-zh/6.3.html">6.3</a>）；</li><li>字符串操作库（参见<a href="/lua5.4-manual-zh/6.4.html">6.4</a>）；</li><li>基本的 UTF-8 支持（参见<a href="/lua5.4-manual-zh/6.5.html">6.5</a>）；</li><li>表操作库（参见<a href="/lua5.4-manual-zh/6.6.html">6.6</a>）；</li><li>数学库（参见<a href="/lua5.4-manual-zh/6.6.html">6.6</a>）（例如 sin、log 等）；</li><li>I/O（参见<a href="/lua5.4-manual-zh/6.8.html">6.8</a>）;</li><li>OS（参见<a href="/lua5.4-manual-zh/6.9.html">6.9</a>）;</li><li>调试工具（参见<a href="/lua5.4-manual-zh/6.10.html">6.10</a>）;</li></ul><p>除了基础库和包相关的库，每个库都是以某个全局表或其对象的成员函数的形式提供的。</p><p>为了访问这些库，宿主程序中应当调用<a href="/lua5.4-manual-zh/5.1.html#luaL_openlibs">luaL_openlibs</a>函数以打开所有的标准库。或者可以使用<a href="/lua5.4-manual-zh/5.1.html#luaL_requiref">luaL_requiref</a>单独打开某个库，其中可以传入 luaopen_base（基础库）、luaopen_package (包相关库)、luaopen_coroutine (协程库)、luaopen_string (字符串库)、luaopen_utf8 (UTF-8 库)、luaopen_table (表相关库)、luaopen_math (数学库)、luaopen_io (I/O库)、luaopen_os (OS相关库)、以及 luaopen_debug (调试库)。这些函数声明在头文件 lualib.h 中。</p>',8),h=[n];function o(r,i,_,m,s,p){return e(),l("div",null,h)}const d=a(u,[["render",o]]);export{c as __pageData,d as default};
