mirror of
https://github.com/Leonmmcoset/CMLeonOS.git
synced 2026-03-03 11:37:01 +00:00
346 lines
171 KiB
HTML
346 lines
171 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||
<meta name="generator" content="VuePress 2.0.0-rc.20" />
|
||
<style>
|
||
:root {
|
||
--vp-c-bg: #fff;
|
||
}
|
||
|
||
[data-theme='dark'] {
|
||
--vp-c-bg: #1b1b1f;
|
||
}
|
||
|
||
html,
|
||
body {
|
||
background-color: var(--vp-c-bg);
|
||
}
|
||
</style>
|
||
<script>
|
||
const useChoice = localStorage.getItem('vuepress-color-scheme')
|
||
const systemStatus =
|
||
'matchMedia' in window
|
||
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
||
: false
|
||
|
||
if (useChoice === 'light') {
|
||
document.documentElement.dataset.theme = 'light'
|
||
} else if (useChoice === 'dark' || systemStatus) {
|
||
document.documentElement.dataset.theme = 'dark'
|
||
}
|
||
</script>
|
||
<title>CMLeonOS Lua API 文档 | CMLeonOS官方文档站</title><meta name="description" content="CMLeonOS是一个基于微内核架构的操作系统,它的目标是提供一个简单、可靠、安全的操作系统环境。">
|
||
<link rel="preload" href="/assets/style-BmL0kmLr.css" as="style"><link rel="stylesheet" href="/assets/style-BmL0kmLr.css">
|
||
<link rel="modulepreload" href="/assets/app-C1vKFkGc.js"><link rel="modulepreload" href="/assets/lua.html-3_L4TJjQ.js">
|
||
<link rel="prefetch" href="/assets/commands.html-DsR2axk8.js" as="script"><link rel="prefetch" href="/assets/get-started.html-CfHiKCXZ.js" as="script"><link rel="prefetch" href="/assets/index.html-BMbDjf_W.js" as="script"><link rel="prefetch" href="/assets/404.html-ByTdGTSm.js" as="script">
|
||
</head>
|
||
<body>
|
||
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">CMLeonOS官方文档站</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="主页"><!--[--><!--[--><!--]--><!--]-->主页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/get-started.html" aria-label="配置教程"><!--[--><!--[--><!--]--><!--]-->配置教程<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/lua.html" aria-label="CMLeonOS Lua API 文档"><!--[--><!--[--><!--]--><!--]-->CMLeonOS Lua API 文档<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/commands.html" aria-label="命令列表"><!--[--><!--[--><!--]--><!--]-->命令列表<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="主页"><!--[--><!--[--><!--]--><!--]-->主页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/get-started.html" aria-label="配置教程"><!--[--><!--[--><!--]--><!--]-->配置教程<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/lua.html" aria-label="CMLeonOS Lua API 文档"><!--[--><!--[--><!--]--><!--]-->CMLeonOS Lua API 文档<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/commands.html" aria-label="命令列表"><!--[--><!--[--><!--]--><!--]-->命令列表<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">CMLeonOS Lua API 文档 <!----></p><!----></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h1 id="cmleonos-lua-api-文档" tabindex="-1"><a class="header-anchor" href="#cmleonos-lua-api-文档"><span>CMLeonOS Lua API 文档</span></a></h1><p>本文档记录了 CMLeonOS 中 Lua 支持的所有函数和库。</p><h2 id="基础库-base" tabindex="-1"><a class="header-anchor" href="#基础库-base"><span>基础库 (base)</span></a></h2><h3 id="assert-v-message" tabindex="-1"><a class="header-anchor" href="#assert-v-message"><span>assert(v [, message])</span></a></h3><p>如果 v 为 false 或 nil,则抛出错误。可选参数 message 为错误信息。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">assert</span><span class="token punctuation">(</span><span class="token keyword">true</span><span class="token punctuation">,</span> <span class="token string">"This should be true"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">assert</span><span class="token punctuation">(</span><span class="token keyword">false</span><span class="token punctuation">,</span> <span class="token string">"This is false"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="collectgarbage-opt" tabindex="-1"><a class="header-anchor" href="#collectgarbage-opt"><span>collectgarbage([opt])</span></a></h3><p>垃圾回收控制。支持以下选项:</p><ul><li><code>"collect"</code> - 执行垃圾回收</li><li><code>"count"</code> - 返回当前内存使用量(千字节)</li><li><code>"step"</code> - 执行一步垃圾回收</li><li><code>"isrunning"</code> - 返回垃圾回收器是否在运行</li></ul><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">collectgarbage</span><span class="token punctuation">(</span><span class="token string">"collect"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">collectgarbage</span><span class="token punctuation">(</span><span class="token string">"count"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="dofile-filename" tabindex="-1"><a class="header-anchor" href="#dofile-filename"><span>dofile([filename])</span></a></h3><p>加载并执行指定文件。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">dofile</span><span class="token punctuation">(</span><span class="token string">"script.lua"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="input-prompt" tabindex="-1"><a class="header-anchor" href="#input-prompt"><span>input([prompt])</span></a></h3><p>从控制台读取一行输入。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> name <span class="token operator">=</span> <span class="token function">input</span><span class="token punctuation">(</span><span class="token string">"Enter your name: "</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Hello, "</span> <span class="token operator">..</span> name<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="error-message-level" tabindex="-1"><a class="header-anchor" href="#error-message-level"><span>error(message [, level])</span></a></h3><p>抛出错误并终止当前受保护的调用。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">error</span><span class="token punctuation">(</span><span class="token string">"Something went wrong"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="ipairs-t" tabindex="-1"><a class="header-anchor" href="#ipairs-t"><span>ipairs(t)</span></a></h3><p>遍历数组,返回迭代器函数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">for</span> i<span class="token punctuation">,</span> v <span class="token keyword">in</span> <span class="token function">ipairs</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token keyword">do</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> v<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="loadfile-filename" tabindex="-1"><a class="header-anchor" href="#loadfile-filename"><span>loadfile([filename])</span></a></h3><p>加载文件但不执行,返回函数或 nil, error。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> func<span class="token punctuation">,</span> err <span class="token operator">=</span> <span class="token function">loadfile</span><span class="token punctuation">(</span><span class="token string">"script.lua"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">if</span> func <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">func</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="load-string-chunkname" tabindex="-1"><a class="header-anchor" href="#load-string-chunkname"><span>load(string [, chunkname])</span></a></h3><p>加载字符串但不执行,返回函数或 nil, error。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> func <span class="token operator">=</span> <span class="token function">load</span><span class="token punctuation">(</span><span class="token string">"print('Hello')"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">if</span> func <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">func</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="loadstring-string-chunkname" tabindex="-1"><a class="header-anchor" href="#loadstring-string-chunkname"><span>loadstring(string [, chunkname])</span></a></h3><p>加载字符串但不执行,返回函数或 nil, error。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> func <span class="token operator">=</span> <span class="token function">loadstring</span><span class="token punctuation">(</span><span class="token string">"print('Hello')"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">if</span> func <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">func</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="next-table-index" tabindex="-1"><a class="header-anchor" href="#next-table-index"><span>next(table [, index])</span></a></h3><p>返回表的下一个键值对。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span>a <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token keyword">local</span> k<span class="token punctuation">,</span> v <span class="token operator">=</span> <span class="token function">next</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span> <span class="token comment">-- a, 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="pairs-t" tabindex="-1"><a class="header-anchor" href="#pairs-t"><span>pairs(t)</span></a></h3><p>遍历表,返回迭代器函数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span>x <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> y <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">,</span> z <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token keyword">for</span> k<span class="token punctuation">,</span> v <span class="token keyword">in</span> <span class="token function">pairs</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span> <span class="token keyword">do</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="pcall-f-arg1" tabindex="-1"><a class="header-anchor" href="#pcall-f-arg1"><span>pcall(f [, arg1, ...])</span></a></h3><p>安全调用函数,捕获错误。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> status<span class="token punctuation">,</span> err <span class="token operator">=</span> <span class="token function">pcall</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"> <span class="token function">error</span><span class="token punctuation">(</span><span class="token string">"Something went wrong"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">if</span> <span class="token keyword">not</span> status <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>err<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="print" tabindex="-1"><a class="header-anchor" href="#print"><span>print(...)</span></a></h3><p>打印参数到控制台。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Hello, World!"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Value:"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="rawequal-v1-v2" tabindex="-1"><a class="header-anchor" href="#rawequal-v1-v2"><span>rawequal(v1, v2)</span></a></h3><p>比较两个值是否相等(不使用元方法)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">rawequal</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- true</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">rawequal</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- false</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="rawlen-v" tabindex="-1"><a class="header-anchor" href="#rawlen-v"><span>rawlen(v)</span></a></h3><p>返回值的长度(不使用元方法)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">rawlen</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 5</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="rawget-table-index" tabindex="-1"><a class="header-anchor" href="#rawget-table-index"><span>rawget(table, index)</span></a></h3><p>获取表的值(不使用元方法)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token function">setmetatable</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>__index <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token string">"default"</span> <span class="token keyword">end</span><span class="token punctuation">}</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">rawget</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> <span class="token string">"key"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- default</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="rawset-table-index-value" tabindex="-1"><a class="header-anchor" href="#rawset-table-index-value"><span>rawset(table, index, value)</span></a></h3><p>设置表的值(不使用元方法)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">rawset</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> <span class="token string">"key"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="select-index" tabindex="-1"><a class="header-anchor" href="#select-index"><span>select(index, ...)</span></a></h3><p>返回第 index 个参数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">select</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"b"</span><span class="token punctuation">,</span> <span class="token string">"c"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- c</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="getmetatable-object" tabindex="-1"><a class="header-anchor" href="#getmetatable-object"><span>getmetatable(object)</span></a></h3><p>返回对象的元表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span>
|
||
<span class="line">mt <span class="token operator">=</span> <span class="token punctuation">{</span>__add <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token keyword">return</span> a <span class="token operator">+</span> b <span class="token keyword">end</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">setmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> mt<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">getmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">.</span>__add<span class="token punctuation">)</span> <span class="token comment">-- function</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="setmetatable-table-metatable" tabindex="-1"><a class="header-anchor" href="#setmetatable-table-metatable"><span>setmetatable(table, metatable)</span></a></h3><p>设置对象的元表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span>
|
||
<span class="line">mt <span class="token operator">=</span> <span class="token punctuation">{</span>__add <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token keyword">return</span> a <span class="token operator">+</span> b <span class="token keyword">end</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">setmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> mt<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="tonumber-e-base" tabindex="-1"><a class="header-anchor" href="#tonumber-e-base"><span>tonumber(e [, base])</span></a></h3><p>将值转换为数字。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">tonumber</span><span class="token punctuation">(</span><span class="token string">"123"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 123</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">tonumber</span><span class="token punctuation">(</span><span class="token string">"FF"</span><span class="token punctuation">,</span> <span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 255</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="tostring-v" tabindex="-1"><a class="header-anchor" href="#tostring-v"><span>tostring(v)</span></a></h3><p>将值转换为字符串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">tostring</span><span class="token punctuation">(</span><span class="token number">123</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- "123"</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">tostring</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- "table: 0x..."</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="type-v" tabindex="-1"><a class="header-anchor" href="#type-v"><span>type(v)</span></a></h3><p>返回值的类型。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">type</span><span class="token punctuation">(</span><span class="token number">123</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- number</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">type</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- string</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">type</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- table</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">type</span><span class="token punctuation">(</span><span class="token keyword">nil</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- nil</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="xpcall-f-arg1" tabindex="-1"><a class="header-anchor" href="#xpcall-f-arg1"><span>xpcall(f [, arg1, ...])</span></a></h3><p>扩展的 pcall,返回状态和错误。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> ok<span class="token punctuation">,</span> err <span class="token operator">=</span> <span class="token function">xpcall</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"> <span class="token function">error</span><span class="token punctuation">(</span><span class="token string">"Something went wrong"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">if</span> <span class="token keyword">not</span> ok <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>err<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="数学库-math" tabindex="-1"><a class="header-anchor" href="#数学库-math"><span>数学库 (math)</span></a></h2><h3 id="math-abs-x" tabindex="-1"><a class="header-anchor" href="#math-abs-x"><span>math.abs(x)</span></a></h3><p>返回 x 的绝对值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">abs</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 5</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">abs</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 5</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-acos-x" tabindex="-1"><a class="header-anchor" href="#math-acos-x"><span>math.acos(x)</span></a></h3><p>返回 x 的反余弦值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">acos</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1.570796</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-asin-x" tabindex="-1"><a class="header-anchor" href="#math-asin-x"><span>math.asin(x)</span></a></h3><p>返回 x 的反正弦值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">asin</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-atan2-y-x" tabindex="-1"><a class="header-anchor" href="#math-atan2-y-x"><span>math.atan2(y, x)</span></a></h3><p>返回 y/x 的反正切值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">atan2</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-atan-x" tabindex="-1"><a class="header-anchor" href="#math-atan-x"><span>math.atan(x)</span></a></h3><p>返回 x 的反正切值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">atan</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0.785398</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-ceil-x" tabindex="-1"><a class="header-anchor" href="#math-ceil-x"><span>math.ceil(x)</span></a></h3><p>返回不小于 x 的最小整数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">ceil</span><span class="token punctuation">(</span><span class="token number">3.5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 4</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">ceil</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">3.5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- -3</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-cosh-x" tabindex="-1"><a class="header-anchor" href="#math-cosh-x"><span>math.cosh(x)</span></a></h3><p>返回 x 的双曲余弦值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">cosh</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-cos-x" tabindex="-1"><a class="header-anchor" href="#math-cos-x"><span>math.cos(x)</span></a></h3><p>返回 x 的余弦值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">cos</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">cos</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>pi<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- -1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-deg-x" tabindex="-1"><a class="header-anchor" href="#math-deg-x"><span>math.deg(x)</span></a></h3><p>将弧度转换为角度。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">deg</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>pi<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 180</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-exp-x" tabindex="-1"><a class="header-anchor" href="#math-exp-x"><span>math.exp(x)</span></a></h3><p>返回 e 的 x 次方。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">exp</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 2.718282</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-floor-x" tabindex="-1"><a class="header-anchor" href="#math-floor-x"><span>math.floor(x)</span></a></h3><p>返回不大于 x 的最大整数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span><span class="token number">3.5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 3</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">3.5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- -4</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-fmod-x-y" tabindex="-1"><a class="header-anchor" href="#math-fmod-x-y"><span>math.fmod(x, y)</span></a></h3><p>返回 x 除以 y 的余数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">fmod</span><span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-frexp-x" tabindex="-1"><a class="header-anchor" href="#math-frexp-x"><span>math.frexp(x)</span></a></h3><p>将 x 分解为尾数和指数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> m<span class="token punctuation">,</span> e <span class="token operator">=</span> math<span class="token punctuation">.</span><span class="token function">frexp</span><span class="token punctuation">(</span><span class="token number">1.5</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>m<span class="token punctuation">,</span> e<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-ldexp-m-e" tabindex="-1"><a class="header-anchor" href="#math-ldexp-m-e"><span>math.ldexp(m, e)</span></a></h3><p>返回 m 乘以 2 的 e 次方。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">ldexp</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 4</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-log10-x" tabindex="-1"><a class="header-anchor" href="#math-log10-x"><span>math.log10(x)</span></a></h3><p>返回 x 的以 10 为底的对数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">log10</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 2</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-log-x-base" tabindex="-1"><a class="header-anchor" href="#math-log-x-base"><span>math.log(x [, base])</span></a></h3><p>返回 x 的对数。默认以 e 为底。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 2.302585</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 2</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-max-x1" tabindex="-1"><a class="header-anchor" href="#math-max-x1"><span>math.max(x1, ...)</span></a></h3><p>返回参数中的最大值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 3</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- -1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-min-x1" tabindex="-1"><a class="header-anchor" href="#math-min-x1"><span>math.min(x1, ...)</span></a></h3><p>返回参数中的最小值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">min</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- -5</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-modf-x" tabindex="-1"><a class="header-anchor" href="#math-modf-x"><span>math.modf(x)</span></a></h3><p>将 x 分解为整数和小数部分。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> i<span class="token punctuation">,</span> f <span class="token operator">=</span> math<span class="token punctuation">.</span><span class="token function">modf</span><span class="token punctuation">(</span><span class="token number">3.5</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>i<span class="token punctuation">,</span> f<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-pow-x-y" tabindex="-1"><a class="header-anchor" href="#math-pow-x-y"><span>math.pow(x, y)</span></a></h3><p>返回 x 的 y 次方。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">pow</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 8</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">pow</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 100</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-rad-x" tabindex="-1"><a class="header-anchor" href="#math-rad-x"><span>math.rad(x)</span></a></h3><p>将角度转换为弧度。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">rad</span><span class="token punctuation">(</span><span class="token number">180</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 3.141593</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-random-m-n" tabindex="-1"><a class="header-anchor" href="#math-random-m-n"><span>math.random([m [, n]])</span></a></h3><p>返回随机数。无参数返回 [0,1),一个参数返回 [1,m],两个参数返回 [m,n]。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0 或 1</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1-10</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 5-10</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-randomseed-x" tabindex="-1"><a class="header-anchor" href="#math-randomseed-x"><span>math.randomseed(x)</span></a></h3><p>设置随机数生成器的种子。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">math<span class="token punctuation">.</span><span class="token function">randomseed</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">time</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-sinh-x" tabindex="-1"><a class="header-anchor" href="#math-sinh-x"><span>math.sinh(x)</span></a></h3><p>返回 x 的双曲正弦值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">sinh</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-sin-x" tabindex="-1"><a class="header-anchor" href="#math-sin-x"><span>math.sin(x)</span></a></h3><p>返回 x 的正弦值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">sin</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">sin</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>pi<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-sqrt-x" tabindex="-1"><a class="header-anchor" href="#math-sqrt-x"><span>math.sqrt(x)</span></a></h3><p>返回 x 的平方根。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 4</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1.414214</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-tanh-x" tabindex="-1"><a class="header-anchor" href="#math-tanh-x"><span>math.tanh(x)</span></a></h3><p>返回 x 的双曲正切值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">tanh</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-tan-x" tabindex="-1"><a class="header-anchor" href="#math-tan-x"><span>math.tan(x)</span></a></h3><p>返回 x 的正切值(弧度)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">tan</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span><span class="token function">tan</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>pi<span class="token operator">/</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="math-pi" tabindex="-1"><a class="header-anchor" href="#math-pi"><span>math.pi</span></a></h3><p>圆周率常量。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>pi<span class="token punctuation">)</span> <span class="token comment">-- 3.141592653589793</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="math-huge" tabindex="-1"><a class="header-anchor" href="#math-huge"><span>math.huge</span></a></h3><p>表示最大数值的常量。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>math<span class="token punctuation">.</span>huge<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="字符串库-string" tabindex="-1"><a class="header-anchor" href="#字符串库-string"><span>字符串库 (string)</span></a></h2><h3 id="string-byte-s-i-j" tabindex="-1"><a class="header-anchor" href="#string-byte-s-i-j"><span>string.byte(s [, i [, j]])</span></a></h3><p>返回字符的内部数值表示。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">byte</span><span class="token punctuation">(</span><span class="token string">"ABC"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 65</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">byte</span><span class="token punctuation">(</span><span class="token string">"ABC"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 66</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">byte</span><span class="token punctuation">(</span><span class="token string">"ABC"</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 67</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-char" tabindex="-1"><a class="header-anchor" href="#string-char"><span>string.char(...)</span></a></h3><p>将数值转换为字符。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">char</span><span class="token punctuation">(</span><span class="token number">65</span><span class="token punctuation">,</span> <span class="token number">66</span><span class="token punctuation">,</span> <span class="token number">67</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- ABC</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-dump-function" tabindex="-1"><a class="header-anchor" href="#string-dump-function"><span>string.dump(function)</span></a></h3><p>返回函数的二进制表示。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">dump</span><span class="token punctuation">(</span>print<span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-find-s-pattern-init-plain" tabindex="-1"><a class="header-anchor" href="#string-find-s-pattern-init-plain"><span>string.find(s, pattern [, init [, plain]])</span></a></h3><p>在字符串中查找模式。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"world"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 7</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"l"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 3</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-format-formatstring" tabindex="-1"><a class="header-anchor" href="#string-format-formatstring"><span>string.format(formatstring, ...)</span></a></h3><p>格式化字符串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token string">"Value: %d"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span><span class="token string">"Name: %s, Age: %d"</span><span class="token punctuation">,</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-gmatch-s-pattern" tabindex="-1"><a class="header-anchor" href="#string-gmatch-s-pattern"><span>string.gmatch(s, pattern)</span></a></h3><p>返回字符串中所有匹配模式的迭代器。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">for</span> word <span class="token keyword">in</span> string<span class="token punctuation">.</span><span class="token function">gmatch</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"%a+"</span><span class="token punctuation">)</span> <span class="token keyword">do</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>word<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-gsub-s-pattern-repl-n" tabindex="-1"><a class="header-anchor" href="#string-gsub-s-pattern-repl-n"><span>string.gsub(s, pattern, repl [, n])</span></a></h3><p>替换字符串中的模式。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">gsub</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"world"</span><span class="token punctuation">,</span> <span class="token string">"Lua"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- hello Lua</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">gsub</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"l"</span><span class="token punctuation">,</span> <span class="token string">"L"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- HeLLo Lua</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-len-s" tabindex="-1"><a class="header-anchor" href="#string-len-s"><span>string.len(s)</span></a></h3><p>返回字符串长度。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">len</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 5</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-lower-s" tabindex="-1"><a class="header-anchor" href="#string-lower-s"><span>string.lower(s)</span></a></h3><p>将字符串转换为小写。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">lower</span><span class="token punctuation">(</span><span class="token string">"HELLO"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- hello</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-match-s-pattern-init" tabindex="-1"><a class="header-anchor" href="#string-match-s-pattern-init"><span>string.match(s, pattern [, init])</span></a></h3><p>返回字符串中第一个匹配模式的子串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">match</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token string">"%w+"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- hello</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-rep-s-n" tabindex="-1"><a class="header-anchor" href="#string-rep-s-n"><span>string.rep(s, n)</span></a></h3><p>重复字符串 n 次。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">rep</span><span class="token punctuation">(</span><span class="token string">"ab"</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- ababab</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-reverse-s" tabindex="-1"><a class="header-anchor" href="#string-reverse-s"><span>string.reverse(s)</span></a></h3><p>反转字符串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- olleh</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="string-sub-s-i-j" tabindex="-1"><a class="header-anchor" href="#string-sub-s-i-j"><span>string.sub(s, i [, j])</span></a></h3><p>返回字符串的子串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">sub</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- hello</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">sub</span><span class="token punctuation">(</span><span class="token string">"hello world"</span><span class="token punctuation">,</span> <span class="token number">7</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- world</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="string-upper-s" tabindex="-1"><a class="header-anchor" href="#string-upper-s"><span>string.upper(s)</span></a></h3><p>将字符串转换为大写。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>string<span class="token punctuation">.</span><span class="token function">upper</span><span class="token punctuation">(</span><span class="token string">"hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- HELLO</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="操作系统库-os" tabindex="-1"><a class="header-anchor" href="#操作系统库-os"><span>操作系统库 (os)</span></a></h2><h3 id="os-clock" tabindex="-1"><a class="header-anchor" href="#os-clock"><span>os.clock()</span></a></h3><p>返回程序使用的 CPU 时间(秒)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">clock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-gethostname" tabindex="-1"><a class="header-anchor" href="#os-gethostname"><span>os.gethostname()</span></a></h3><p>返回系统主机名。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">gethostname</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-getenv-varname" tabindex="-1"><a class="header-anchor" href="#os-getenv-varname"><span>os.getenv(varname)</span></a></h3><p>返回环境变量的值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">getenv</span><span class="token punctuation">(</span><span class="token string">"PATH"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-setenv-varname-value" tabindex="-1"><a class="header-anchor" href="#os-setenv-varname-value"><span>os.setenv(varname, value)</span></a></h3><p>设置环境变量的值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">setenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-delenv-varname" tabindex="-1"><a class="header-anchor" href="#os-delenv-varname"><span>os.delenv(varname)</span></a></h3><p>删除环境变量。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">delenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-addenv-varname-value" tabindex="-1"><a class="header-anchor" href="#os-addenv-varname-value"><span>os.addenv(varname, value)</span></a></h3><p>添加环境变量(同 setenv)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">addenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-execute-command" tabindex="-1"><a class="header-anchor" href="#os-execute-command"><span>os.execute(command)</span></a></h3><p>执行 Shell 命令。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token string">"ls"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">os<span class="token punctuation">.</span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token string">"echo Hello"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="os-executefile-path" tabindex="-1"><a class="header-anchor" href="#os-executefile-path"><span>os.executefile(path)</span></a></h3><p>执行命令文件(.cm)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">executefile</span><span class="token punctuation">(</span><span class="token string">"myscript.cm"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-reboot" tabindex="-1"><a class="header-anchor" href="#os-reboot"><span>os.reboot()</span></a></h3><p>重启系统。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">reboot</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-shutdown" tabindex="-1"><a class="header-anchor" href="#os-shutdown"><span>os.shutdown()</span></a></h3><p>关闭系统。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">shutdown</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-sleep-seconds" tabindex="-1"><a class="header-anchor" href="#os-sleep-seconds"><span>os.sleep(seconds)</span></a></h3><p>休眠指定秒数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-beep" tabindex="-1"><a class="header-anchor" href="#os-beep"><span>os.beep()</span></a></h3><p>发出蜂鸣声。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">beep</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-clear" tabindex="-1"><a class="header-anchor" href="#os-clear"><span>os.clear()</span></a></h3><p>清屏。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-getusername" tabindex="-1"><a class="header-anchor" href="#os-getusername"><span>os.getusername()</span></a></h3><p>返回当前登录用户名。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">getusername</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-isadmin" tabindex="-1"><a class="header-anchor" href="#os-isadmin"><span>os.isadmin()</span></a></h3><p>检查当前用户是否是管理员。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">if</span> os<span class="token punctuation">.</span><span class="token function">isadmin</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">then</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"User is admin"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">else</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"User is not admin"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="os-sha256-input" tabindex="-1"><a class="header-anchor" href="#os-sha256-input"><span>os.sha256(input)</span></a></h3><p>计算字符串的 SHA256 哈希值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> hash <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">sha256</span><span class="token punctuation">(</span><span class="token string">"Hello World"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>hash<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="os-base64encrypt-input" tabindex="-1"><a class="header-anchor" href="#os-base64encrypt-input"><span>os.base64encrypt(input)</span></a></h3><p>将字符串编码为 Base64。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> encoded <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">base64encrypt</span><span class="token punctuation">(</span><span class="token string">"Hello World"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>encoded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="os-base64decrypt-input" tabindex="-1"><a class="header-anchor" href="#os-base64decrypt-input"><span>os.base64decrypt(input)</span></a></h3><p>将 Base64 字符串解码。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> decoded <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">base64decrypt</span><span class="token punctuation">(</span><span class="token string">"SGVsbG8gV29ybGxcmVvcmxvYg=="</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>decoded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="os-timerstart" tabindex="-1"><a class="header-anchor" href="#os-timerstart"><span>os.timerstart()</span></a></h3><p>启动计时器,记录当前时间。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">timerstart</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-timerstop" tabindex="-1"><a class="header-anchor" href="#os-timerstop"><span>os.timerstop()</span></a></h3><p>停止计时器并返回从 timerstart 到 timerstop 之间的时间(秒)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">timerstart</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">for</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1000000</span> <span class="token keyword">do</span></span>
|
||
<span class="line"> <span class="token keyword">local</span> x <span class="token operator">=</span> i <span class="token operator">*</span> <span class="token number">2</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"><span class="token keyword">local</span> elapsed <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">timerstop</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Elapsed time:"</span><span class="token punctuation">,</span> elapsed<span class="token punctuation">,</span> <span class="token string">"seconds"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>注意</strong>:</p><ul><li>如果在未调用 <code>timerstart</code> 的情况下调用 <code>timerstop</code>,将返回 <code>nil</code></li><li>每次调用 <code>timerstop</code> 后,计时器会被重置</li><li>返回的时间单位为秒(浮点数)</li></ul><h3 id="os-tui-drawbox-x-y-width-height-title-bordercolor-backgroundcolor" tabindex="-1"><a class="header-anchor" href="#os-tui-drawbox-x-y-width-height-title-bordercolor-backgroundcolor"><span>os.tui_drawbox(x, y, width, height, title, borderColor, backgroundColor)</span></a></h3><p>绘制带边框和标题的矩形框。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_drawbox</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token string">"Title"</span><span class="token punctuation">,</span> <span class="token string">"white"</span><span class="token punctuation">,</span> <span class="token string">"darkblue"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>参数</strong>:</p><ul><li><code>x</code> - 矩形框的左上角 X 坐标</li><li><code>y</code> - 矩形框的左上角 Y 坐标</li><li><code>width</code> - 矩形框的宽度</li><li><code>height</code> - 矩形框的高度</li><li><code>title</code> - 矩形框的标题(可选)</li><li><code>borderColor</code> - 边框颜色(black, blue, cyan, darkblue, darkcyan, darkgray, darkgreen, darkmagenta, darkred, darkyellow, gray, green, magenta, red, white, yellow)</li><li><code>backgroundColor</code> - 背景颜色(同上)</li></ul><h3 id="os-tui-drawtext-x-y-text-foregroundcolor-backgroundcolor" tabindex="-1"><a class="header-anchor" href="#os-tui-drawtext-x-y-text-foregroundcolor-backgroundcolor"><span>os.tui_drawtext(x, y, text, foregroundColor, backgroundColor)</span></a></h3><p>在指定位置绘制文本。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_drawtext</span><span class="token punctuation">(</span><span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token string">"Hello World!"</span><span class="token punctuation">,</span> <span class="token string">"yellow"</span><span class="token punctuation">,</span> <span class="token string">"black"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>参数</strong>:</p><ul><li><code>x</code> - 文本的 X 坐标</li><li><code>y</code> - 文本的 Y 坐标</li><li><code>text</code> - 要绘制的文本内容</li><li><code>foregroundColor</code> - 前景色(同上)</li><li><code>backgroundColor</code> - 背景色(同上)</li></ul><h3 id="os-tui-setcolor-foregroundcolor-backgroundcolor" tabindex="-1"><a class="header-anchor" href="#os-tui-setcolor-foregroundcolor-backgroundcolor"><span>os.tui_setcolor(foregroundColor, backgroundColor)</span></a></h3><p>设置前景色和背景色。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_setcolor</span><span class="token punctuation">(</span><span class="token string">"white"</span><span class="token punctuation">,</span> <span class="token string">"black"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>参数</strong>:</p><ul><li><code>foregroundColor</code> - 前景色(black, blue, cyan, darkblue, darkcyan, darkgray, darkgreen, darkmagenta, darkred, darkyellow, gray, green, magenta, red, white, yellow)</li><li><code>backgroundColor</code> - 背景色(同上)</li></ul><h3 id="os-tui-setcursor-x-y" tabindex="-1"><a class="header-anchor" href="#os-tui-setcursor-x-y"><span>os.tui_setcursor(x, y)</span></a></h3><p>设置光标位置。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_setcursor</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>参数</strong>:</p><ul><li><code>x</code> - 光标的 X 坐标</li><li><code>y</code> - 光标的 Y 坐标</li></ul><h3 id="os-tui-clear" tabindex="-1"><a class="header-anchor" href="#os-tui-clear"><span>os.tui_clear()</span></a></h3><p>清屏。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_clear</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="os-tui-drawline-x-y-length-character-color" tabindex="-1"><a class="header-anchor" href="#os-tui-drawline-x-y-length-character-color"><span>os.tui_drawline(x, y, length, character, color)</span></a></h3><p>绘制水平线。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">tui_drawline</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token string">"-"</span><span class="token punctuation">,</span> <span class="token string">"green"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>参数</strong>:</p><ul><li><code>x</code> - 线的起始 X 坐标</li><li><code>y</code> - 线的起始 Y 坐标</li><li><code>length</code> - 线的长度</li><li><code>character</code> - 用于绘制线的字符</li><li><code>color</code> - 线的颜色(同上)</li></ul><hr><h2 id="输入输出库-io" tabindex="-1"><a class="header-anchor" href="#输入输出库-io"><span>输入输出库 (io)</span></a></h2><h3 id="io-close-file" tabindex="-1"><a class="header-anchor" href="#io-close-file"><span>io.close(file)</span></a></h3><p>关闭文件。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> file <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"test.txt"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">file<span class="token punctuation">:</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token string">"Hello"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">io<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-flush" tabindex="-1"><a class="header-anchor" href="#io-flush"><span>io.flush()</span></a></h3><p>刷新所有打开文件的输出缓冲区。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">io<span class="token punctuation">.</span><span class="token function">flush</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="io-input-file" tabindex="-1"><a class="header-anchor" href="#io-input-file"><span>io.input([file])</span></a></h3><p>设置默认输入文件。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">io<span class="token punctuation">.</span><span class="token function">input</span><span class="token punctuation">(</span><span class="token string">"input.txt"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="io-lines-filename" tabindex="-1"><a class="header-anchor" href="#io-lines-filename"><span>io.lines([filename])</span></a></h3><p>返回文件行的迭代器。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">for</span> line <span class="token keyword">in</span> io<span class="token punctuation">.</span><span class="token function">lines</span><span class="token punctuation">(</span><span class="token string">"test.txt"</span><span class="token punctuation">)</span> <span class="token keyword">do</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-open-filename-mode" tabindex="-1"><a class="header-anchor" href="#io-open-filename-mode"><span>io.open(filename [, mode])</span></a></h3><p>打开文件,返回文件句柄。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> file <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"test.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">local</span> content <span class="token operator">=</span> file<span class="token punctuation">:</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token string">"*a"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">file<span class="token punctuation">:</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-output-file" tabindex="-1"><a class="header-anchor" href="#io-output-file"><span>io.output([file])</span></a></h3><p>设置默认输出文件。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">io<span class="token punctuation">.</span><span class="token function">output</span><span class="token punctuation">(</span><span class="token string">"output.txt"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="io-popen-prog-mode" tabindex="-1"><a class="header-anchor" href="#io-popen-prog-mode"><span>io.popen(prog [, mode])</span></a></h3><p>启动程序并返回文件句柄。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> file <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">popen</span><span class="token punctuation">(</span><span class="token string">"ls"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">local</span> output <span class="token operator">=</span> file<span class="token punctuation">:</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token string">"*a"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">file<span class="token punctuation">:</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-read" tabindex="-1"><a class="header-anchor" href="#io-read"><span>io.read(...)</span></a></h3><p>从默认输入文件读取数据。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> input <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">read</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>input<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-tmpfile" tabindex="-1"><a class="header-anchor" href="#io-tmpfile"><span>io.tmpfile()</span></a></h3><p>返回临时文件的句柄。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> file <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">tmpfile</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line">file<span class="token punctuation">:</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token string">"temp data"</span><span class="token punctuation">)</span></span>
|
||
<span class="line">file<span class="token punctuation">:</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-type-file" tabindex="-1"><a class="header-anchor" href="#io-type-file"><span>io.type(file)</span></a></h3><p>检查文件是否是打开的文件句柄。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> file <span class="token operator">=</span> io<span class="token punctuation">.</span><span class="token function">open</span><span class="token punctuation">(</span><span class="token string">"test.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>io<span class="token punctuation">.</span><span class="token function">type</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- file</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="io-write" tabindex="-1"><a class="header-anchor" href="#io-write"><span>io.write(...)</span></a></h3><p>写入数据到默认输出文件。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">io<span class="token punctuation">.</span><span class="token function">write</span><span class="token punctuation">(</span><span class="token string">"Hello, World!\n"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="协程库-coroutine" tabindex="-1"><a class="header-anchor" href="#协程库-coroutine"><span>协程库 (coroutine)</span></a></h2><h3 id="coroutine-create-f" tabindex="-1"><a class="header-anchor" href="#coroutine-create-f"><span>coroutine.create(f)</span></a></h3><p>创建新的协程。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">co <span class="token operator">=</span> coroutine<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Coroutine started"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="coroutine-resume-co-val1" tabindex="-1"><a class="header-anchor" href="#coroutine-resume-co-val1"><span>coroutine.resume(co [, val1, ...])</span></a></h3><p>继续或启动协程。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">coroutine<span class="token punctuation">.</span><span class="token function">resume</span><span class="token punctuation">(</span>co<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="coroutine-running" tabindex="-1"><a class="header-anchor" href="#coroutine-running"><span>coroutine.running()</span></a></h3><p>返回当前运行的协程。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>coroutine<span class="token punctuation">.</span><span class="token function">running</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="coroutine-status-co" tabindex="-1"><a class="header-anchor" href="#coroutine-status-co"><span>coroutine.status(co)</span></a></h3><p>返回协程的状态。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>coroutine<span class="token punctuation">.</span><span class="token function">status</span><span class="token punctuation">(</span>co<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- running, suspended, normal, dead</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="coroutine-wrap-f" tabindex="-1"><a class="header-anchor" href="#coroutine-wrap-f"><span>coroutine.wrap(f)</span></a></h3><p>创建包装函数的函数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">co <span class="token operator">=</span> coroutine<span class="token punctuation">.</span><span class="token function">create</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Coroutine"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">end</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">local</span> wrapped <span class="token operator">=</span> coroutine<span class="token punctuation">.</span><span class="token function">wrap</span><span class="token punctuation">(</span>co<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">wrapped</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="coroutine-yield" tabindex="-1"><a class="header-anchor" href="#coroutine-yield"><span>coroutine.yield(...)</span></a></h3><p>挂起当前协程。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">coroutine<span class="token punctuation">.</span><span class="token function">yield</span><span class="token punctuation">(</span><span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="表库-table" tabindex="-1"><a class="header-anchor" href="#表库-table"><span>表库 (table)</span></a></h2><h3 id="table-concat-list-sep-i-j" tabindex="-1"><a class="header-anchor" href="#table-concat-list-sep-i-j"><span>table.concat(list [, sep [, i [, j]])</span></a></h3><p>连接表中的元素。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"b"</span><span class="token punctuation">,</span> <span class="token string">"c"</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>table<span class="token punctuation">.</span><span class="token function">concat</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> <span class="token string">", "</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- a, b, c</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="table-insert-list-pos-value" tabindex="-1"><a class="header-anchor" href="#table-insert-list-pos-value"><span>table.insert(list, [pos,] value)</span></a></h3><p>在表中插入元素。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">}</span></span>
|
||
<span class="line">table<span class="token punctuation">.</span><span class="token function">insert</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="table-maxn-t" tabindex="-1"><a class="header-anchor" href="#table-maxn-t"><span>table.maxn(t)</span></a></h3><p>返回表的最大数字索引(已弃用,使用 # 运算符)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token keyword">nil</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>table<span class="token punctuation">.</span><span class="token function">maxn</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 4</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="table-remove-list-pos" tabindex="-1"><a class="header-anchor" href="#table-remove-list-pos"><span>table.remove(list [, pos])</span></a></h3><p>从表中删除元素。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">}</span></span>
|
||
<span class="line">table<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="table-sort-list-comp" tabindex="-1"><a class="header-anchor" href="#table-sort-list-comp"><span>table.sort(list [, comp])</span></a></h3><p>对表进行排序。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">}</span></span>
|
||
<span class="line">table<span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="调试库-debug" tabindex="-1"><a class="header-anchor" href="#调试库-debug"><span>调试库 (debug)</span></a></h2><h3 id="debug-debug" tabindex="-1"><a class="header-anchor" href="#debug-debug"><span>debug.debug()</span></a></h3><p>进入调试模式。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">debug</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-getfenv-object" tabindex="-1"><a class="header-anchor" href="#debug-getfenv-object"><span>debug.getfenv(object)</span></a></h3><p>返回对象的环境。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getfenv</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">return</span> x <span class="token keyword">end</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-gethook" tabindex="-1"><a class="header-anchor" href="#debug-gethook"><span>debug.gethook()</span></a></h3><p>返回当前的钩子函数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">gethook</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-getinfo-thread-f-what" tabindex="-1"><a class="header-anchor" href="#debug-getinfo-thread-f-what"><span>debug.getinfo([thread [, f [, what]])</span></a></h3><p>返回函数的信息。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getinfo</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-getlocal-thread-f-loc" tabindex="-1"><a class="header-anchor" href="#debug-getlocal-thread-f-loc"><span>debug.getlocal([thread [, f [, loc]])</span></a></h3><p>返回函数的局部变量。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getlocal</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-getmetatable-object" tabindex="-1"><a class="header-anchor" href="#debug-getmetatable-object"><span>debug.getmetatable(object)</span></a></h3><p>返回对象的元表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">t <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span></span>
|
||
<span class="line">mt <span class="token operator">=</span> <span class="token punctuation">{</span>__add <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token keyword">return</span> a <span class="token operator">+</span> b <span class="token keyword">end</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token function">setmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> mt<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">.</span>__add<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="debug-getregistry" tabindex="-1"><a class="header-anchor" href="#debug-getregistry"><span>debug.getregistry()</span></a></h3><p>返回注册表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getregistry</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-getupvalue-f-i" tabindex="-1"><a class="header-anchor" href="#debug-getupvalue-f-i"><span>debug.getupvalue(f [, i])</span></a></h3><p>返回函数的上值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">getupvalue</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-setfenv-object-table" tabindex="-1"><a class="header-anchor" href="#debug-setfenv-object-table"><span>debug.setfenv(object, table)</span></a></h3><p>设置对象的环境。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">setfenv</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">return</span> x <span class="token keyword">end</span><span class="token punctuation">,</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-sethook-hook-mask-count" tabindex="-1"><a class="header-anchor" href="#debug-sethook-hook-mask-count"><span>debug.sethook(hook, mask [, count])</span></a></h3><p>设置钩子函数。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">sethook</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Hook called"</span><span class="token punctuation">)</span> <span class="token keyword">end</span><span class="token punctuation">,</span> <span class="token string">"c"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-setlocal-thread-f-level-value" tabindex="-1"><a class="header-anchor" href="#debug-setlocal-thread-f-level-value"><span>debug.setlocal([thread [, f,] level, value)</span></a></h3><p>设置函数的局部变量。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">setlocal</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-setmetatable-object-table" tabindex="-1"><a class="header-anchor" href="#debug-setmetatable-object-table"><span>debug.setmetatable(object, table)</span></a></h3><p>设置对象的元表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">setmetatable</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span> mt<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-setupvalue-f-i-value" tabindex="-1"><a class="header-anchor" href="#debug-setupvalue-f-i-value"><span>debug.setupvalue(f [, i,] value)</span></a></h3><p>设置函数的上值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">debug<span class="token punctuation">.</span><span class="token function">setupvalue</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">"newvalue"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="debug-traceback-thread-message-level" tabindex="-1"><a class="header-anchor" href="#debug-traceback-thread-message-level"><span>debug.traceback([thread [, message [, level]])</span></a></h3><p>返回调用栈的跟踪信息。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>debug<span class="token punctuation">.</span><span class="token function">traceback</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="位运算库-bit" tabindex="-1"><a class="header-anchor" href="#位运算库-bit"><span>位运算库 (bit)</span></a></h2><h3 id="bit-band-x1-x2" tabindex="-1"><a class="header-anchor" href="#bit-band-x1-x2"><span>bit.band(x1, x2 [, ...])</span></a></h3><p>按位与操作。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">band</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">,</span> <span class="token number">0x0F</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0x0F</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-bnot-x" tabindex="-1"><a class="header-anchor" href="#bit-bnot-x"><span>bit.bnot(x)</span></a></h3><p>按位非操作。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">bnot</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0xFFFFFFF0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-bor-x1-x2" tabindex="-1"><a class="header-anchor" href="#bit-bor-x1-x2"><span>bit.bor(x1, x2 [, ...])</span></a></h3><p>按位或操作。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">bor</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">,</span> <span class="token number">0x0F</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0x0F</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-bxor-x1-x2" tabindex="-1"><a class="header-anchor" href="#bit-bxor-x1-x2"><span>bit.bxor(x1, x2 [, ...])</span></a></h3><p>按位异或操作。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">bxor</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">,</span> <span class="token number">0x0F</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0x00</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-lshift-x-disp" tabindex="-1"><a class="header-anchor" href="#bit-lshift-x-disp"><span>bit.lshift(x, disp)</span></a></h3><p>按位左移。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">lshift</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 4</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-rshift-x-disp" tabindex="-1"><a class="header-anchor" href="#bit-rshift-x-disp"><span>bit.rshift(x, disp)</span></a></h3><p>按位右移。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">rshift</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-arshift-x-disp" tabindex="-1"><a class="header-anchor" href="#bit-arshift-x-disp"><span>bit.arshift(x, disp)</span></a></h3><p>按位算术右移。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">arshift</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 1</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-rol-x-disp" tabindex="-1"><a class="header-anchor" href="#bit-rol-x-disp"><span>bit.rol(x, disp)</span></a></h3><p>循环左移。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">rol</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0xF0</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-ror-x-disp" tabindex="-1"><a class="header-anchor" href="#bit-ror-x-disp"><span>bit.ror(x, disp)</span></a></h3><p>循环右移。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">ror</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 0x0F</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="bit-tobit-x" tabindex="-1"><a class="header-anchor" href="#bit-tobit-x"><span>bit.tobit(x)</span></a></h3><p>转换为位字符串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>bit<span class="token punctuation">.</span><span class="token function">tobit</span><span class="token punctuation">(</span><span class="token number">0x0F</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- 00001111</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="编码库-enc" tabindex="-1"><a class="header-anchor" href="#编码库-enc"><span>编码库 (enc)</span></a></h2><h3 id="enc-base64encode-input" tabindex="-1"><a class="header-anchor" href="#enc-base64encode-input"><span>enc.base64encode(input)</span></a></h3><p>将字符串编码为 Base64。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> encoded <span class="token operator">=</span> enc<span class="token punctuation">.</span><span class="token function">base64encode</span><span class="token punctuation">(</span><span class="token string">"Hello World"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>encoded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="enc-base64decode-input" tabindex="-1"><a class="header-anchor" href="#enc-base64decode-input"><span>enc.base64decode(input)</span></a></h3><p>将 Base64 字符串解码。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> decoded <span class="token operator">=</span> enc<span class="token punctuation">.</span><span class="token function">base64decode</span><span class="token punctuation">(</span><span class="token string">"SGVsbG8gV29ybGxcmVvcmxvYg=="</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>decoded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="json-库" tabindex="-1"><a class="header-anchor" href="#json-库"><span>JSON 库</span></a></h2><h3 id="json-encode-table" tabindex="-1"><a class="header-anchor" href="#json-encode-table"><span>json.encode(table)</span></a></h3><p>将 Lua 表编码为 JSON 字符串。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> data <span class="token operator">=</span> <span class="token punctuation">{</span>name <span class="token operator">=</span> <span class="token string">"John"</span><span class="token punctuation">,</span> age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token keyword">local</span> jsonStr <span class="token operator">=</span> json<span class="token punctuation">.</span><span class="token function">encode</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>jsonStr<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="json-decode-string" tabindex="-1"><a class="header-anchor" href="#json-decode-string"><span>json.decode(string)</span></a></h3><p>将 JSON 字符串解码为 Lua 表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> jsonStr <span class="token operator">=</span> <span class="token string">'{"name": "John", "age": 30}'</span></span>
|
||
<span class="line"><span class="token keyword">local</span> data <span class="token operator">=</span> json<span class="token punctuation">.</span><span class="token function">decode</span><span class="token punctuation">(</span>jsonStr<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>name<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>age<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="json-null" tabindex="-1"><a class="header-anchor" href="#json-null"><span>json.null()</span></a></h3><p>返回 null 值。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> nullValue <span class="token operator">=</span> json<span class="token punctuation">.</span><span class="token function">null</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>nullValue<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="json-parse-string" tabindex="-1"><a class="header-anchor" href="#json-parse-string"><span>json.parse(string)</span></a></h3><p>解析 JSON 字符串(同 decode)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> jsonStr <span class="token operator">=</span> <span class="token string">'{"name": "John", "age": 30}'</span></span>
|
||
<span class="line"><span class="token keyword">local</span> data <span class="token operator">=</span> json<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>jsonStr<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>data<span class="token punctuation">.</span>name<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="json-stringify-table" tabindex="-1"><a class="header-anchor" href="#json-stringify-table"><span>json.stringify(table)</span></a></h3><p>将 Lua 表转换为 JSON 字符串(同 encode)。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> data <span class="token operator">=</span> <span class="token punctuation">{</span>name <span class="token operator">=</span> <span class="token string">"John"</span><span class="token punctuation">,</span> age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">}</span></span>
|
||
<span class="line"><span class="token keyword">local</span> jsonStr <span class="token operator">=</span> json<span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>jsonStr<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><hr><h2 id="包库-package" tabindex="-1"><a class="header-anchor" href="#包库-package"><span>包库 (package)</span></a></h2><h3 id="package-loaded" tabindex="-1"><a class="header-anchor" href="#package-loaded"><span>package.loaded</span></a></h3><p>已加载的包表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>package<span class="token punctuation">.</span>loaded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="package-loaders" tabindex="-1"><a class="header-anchor" href="#package-loaders"><span>package.loaders</span></a></h3><p>包加载器表。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>package<span class="token punctuation">.</span>loaders<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="package-loadlib-libname-initfunc" tabindex="-1"><a class="header-anchor" href="#package-loadlib-libname-initfunc"><span>package.loadlib(libname [, initfunc])</span></a></h3><p>加载 C 库。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">package<span class="token punctuation">.</span><span class="token function">loadlib</span><span class="token punctuation">(</span><span class="token string">"mylib"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="package-path" tabindex="-1"><a class="header-anchor" href="#package-path"><span>package.path</span></a></h3><p>包搜索路径。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>package<span class="token punctuation">.</span>path<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="package-searchpath-name-path-sep-rep" tabindex="-1"><a class="header-anchor" href="#package-searchpath-name-path-sep-rep"><span>package.searchpath(name [, path [, sep [, rep]])</span></a></h3><p>搜索包路径。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>package<span class="token punctuation">.</span><span class="token function">searchpath</span><span class="token punctuation">(</span><span class="token string">"mylib"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="package-seeall-name" tabindex="-1"><a class="header-anchor" href="#package-seeall-name"><span>package.seeall([name])</span></a></h3><p>列出所有已加载的包。</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span>package<span class="token punctuation">.</span><span class="token function">seeall</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><hr><h2 id="使用示例" tabindex="-1"><a class="header-anchor" href="#使用示例"><span>使用示例</span></a></h2><h3 id="交互式-lua-shell" tabindex="-1"><a class="header-anchor" href="#交互式-lua-shell"><span>交互式 Lua Shell</span></a></h3><p>使用 <code>lua --shell</code> 进入交互模式:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code><span class="line">lua --shell</span>
|
||
<span class="line">====================================</span>
|
||
<span class="line"> Lua Interactive Shell</span>
|
||
<span class="line">====================================</span>
|
||
<span class="line">Type 'exit' or 'quit' to exit</span>
|
||
<span class="line"></span>
|
||
<span class="line">lua> print("Hello, World!")</span>
|
||
<span class="line">Hello, World!</span>
|
||
<span class="line"></span>
|
||
<span class="line">lua> os.gethostname()</span>
|
||
<span class="line">myserver</span>
|
||
<span class="line"></span>
|
||
<span class="line">lua> os.sha256("Hello")</span>
|
||
<span class="line">a591a6d40bf420404a011733cfb7b1d12e</span>
|
||
<span class="line"></span>
|
||
<span class="line">lua> exit</span>
|
||
<span class="line">Exiting Lua shell...</span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="执行-lua-脚本文件" tabindex="-1"><a class="header-anchor" href="#执行-lua-脚本文件"><span>执行 Lua 脚本文件</span></a></h3><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">lua script<span class="token punctuation">.</span>lua</span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="系统信息查询" tabindex="-1"><a class="header-anchor" href="#系统信息查询"><span>系统信息查询</span></a></h3><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Hostname:"</span><span class="token punctuation">,</span> os<span class="token punctuation">.</span><span class="token function">gethostname</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Username:"</span><span class="token punctuation">,</span> os<span class="token punctuation">.</span><span class="token function">getusername</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Is Admin:"</span><span class="token punctuation">,</span> os<span class="token punctuation">.</span><span class="token function">isadmin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"SHA256:"</span><span class="token punctuation">,</span> os<span class="token punctuation">.</span><span class="token function">sha256</span><span class="token punctuation">(</span><span class="token string">"Hello"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="环境变量操作" tabindex="-1"><a class="header-anchor" href="#环境变量操作"><span>环境变量操作</span></a></h3><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line">os<span class="token punctuation">.</span><span class="token function">setenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">,</span> <span class="token string">"value"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span><span class="token function">getenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></span>
|
||
<span class="line">os<span class="token punctuation">.</span><span class="token function">delenv</span><span class="token punctuation">(</span><span class="token string">"MYVAR"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="加密和编码" tabindex="-1"><a class="header-anchor" href="#加密和编码"><span>加密和编码</span></a></h3><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token keyword">local</span> hash <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">sha256</span><span class="token punctuation">(</span><span class="token string">"password"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">local</span> encoded <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">base64encrypt</span><span class="token punctuation">(</span><span class="token string">"secret"</span><span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token keyword">local</span> decoded <span class="token operator">=</span> os<span class="token punctuation">.</span><span class="token function">base64decrypt</span><span class="token punctuation">(</span>encoded<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Hash:"</span><span class="token punctuation">,</span> hash<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Encoded:"</span><span class="token punctuation">,</span> encoded<span class="token punctuation">)</span></span>
|
||
<span class="line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"Decoded:"</span><span class="token punctuation">,</span> decoded<span class="token punctuation">)</span></span>
|
||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="注意事项" tabindex="-1"><a class="header-anchor" href="#注意事项"><span>注意事项</span></a></h2><ol><li><strong>交互模式</strong>:使用 <code>lua --shell</code> 进入交互式 Lua Shell</li><li><strong>错误处理</strong>:所有 Lua 执行错误都会被捕获并显示</li><li><strong>系统函数</strong>:<code>os</code> 库包含 CMLeonOS 特定的系统函数</li><li><strong>加密支持</strong>:支持 SHA256 和 Base64 编码/解码</li><li><strong>标准 Lua</strong>:完全兼容 Lua 5.1 标准</li></ol><h2 id="版本信息" tabindex="-1"><a class="header-anchor" href="#版本信息"><span>版本信息</span></a></h2><ul><li><strong>Lua 版本</strong>:5.2</li><li><strong>CMLeonOS 版本</strong>:最新</li></ul></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新:: </span><time class="meta-item-info" datetime="2026-02-07T10:54:10.000Z" data-allow-mismatch>2026/2/7 18:54</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: testmod@qq.com">Leonmmcoset</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
|
||
<script type="module" src="/assets/app-C1vKFkGc.js" defer></script>
|
||
</body>
|
||
</html>
|