Files
reference/docs/lua.html
2022-11-18 09:24:03 +00:00

469 lines
56 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>Lua 备忘清单
&#x26; lua cheatsheet &#x26; Quick Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta description="包含最重要概念、函数、方法等的 Lua 备忘单。 初学者的完整快速参考。为开发人员分享快速参考备忘单。">
<meta keywords="Quick,Reference,cheatsheet,lua">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23c9d1d9%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link rel="stylesheet" href="../style/style.css">
<link rel="stylesheet" href="../style/katex.css">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/lua.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script>
const LOCAL_NANE = '_dark_mode_theme_'
const rememberedValue = localStorage.getItem(LOCAL_NANE);
if (rememberedValue && ['light', 'dark'].includes(rememberedValue)) {
document.documentElement.setAttribute('data-color-mode', rememberedValue);
}
const button = document.querySelector('#darkMode');
button.onclick = () => {
const theme = document.documentElement.dataset.colorMode;
const mode = theme === 'light' ? 'dark' : 'light';
document.documentElement.setAttribute('data-color-mode', mode);
localStorage.setItem(LOCAL_NANE, mode);
}
</script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="lua-备忘清单"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 32 32" height="1em" width="1em">
<path d="m.505 13.839-.36-.052c-.067.459-.109.927-.135 1.391l.364.02c.027-.452.068-.911.131-1.359zm5.011-9.454-.245-.271c-.344.307-.683.635-.995.973l.265.256c.313-.333.636-.656.975-.959zm2.177-1.64-.199-.313c-.391.251-.781.516-1.145.792l.219.292a14.89 14.89 0 0 1 1.125-.771zM2.432 24.489c.245.396.511.781.792 1.151l.292-.219a15.077 15.077 0 0 1-.771-1.124zm-.927-2.62-.344.141c.172.421.365.844.579 1.255l.005.016.328-.167-.011-.016a15.065 15.065 0 0 1-.557-1.229zM.396 12.412l.359.083c.105-.443.224-.885.365-1.312l-.349-.115a15.9 15.9 0 0 0-.375 1.344zm-.032 4.151L0 16.574c.016.463.052.932.109 1.391l.364-.043a14.992 14.992 0 0 1-.109-1.359zm-.02 2.781c.093.453.213.907.349 1.349l.348-.105c-.129-.437-.244-.88-.344-1.323zM15.432.364 15.416 0c-.463.016-.932.052-1.389.109l.047.364c.448-.057.905-.093 1.359-.109zm15.532 11.057c.129.433.244.881.339 1.324l.359-.079a14.795 14.795 0 0 0-.349-1.355zm-7.469-9.566a15.542 15.542 0 0 0-1.26-.6l-.147.333c.423.177.833.376 1.235.589zM20.921.76a17.402 17.402 0 0 0-1.343-.364l-.084.353c.443.105.885.224 1.317.365zM8.901 2.063c.396-.203.807-.391 1.219-.557l-.141-.344a15.88 15.88 0 0 0-1.244.573l-.021.011.167.328zm22.735 13.39.369-.016a21.153 21.153 0 0 0-.109-1.396l-.365.047c.053.448.089.907.105 1.365zM18.203.14a15.693 15.693 0 0 0-1.391-.129l-.015.364c.453.021.911.068 1.359.131zm-5.479.563-.079-.359c-.452.093-.905.213-1.348.349l.109.348c.432-.129.875-.244 1.317-.339zM2.563 7.292l.307.197c.245-.375.511-.749.787-1.109l-.287-.229c-.287.371-.557.756-.807 1.141zM1.255 9.755l.339.147c.177-.417.376-.833.589-1.235l-.328-.172c-.215.412-.417.833-.6 1.26zm23.042 19.5.192.313c.396-.245.781-.511 1.151-.792l-.219-.292c-.359.271-.739.537-1.124.771zm4.031-3.63.292.229c.287-.365.557-.751.807-1.141l-.301-.197c-.251.38-.516.749-.797 1.109zm-1.855 1.995.245.271c.344-.307.683-.64.995-.973l-.265-.256c-.308.333-.641.651-.975.959zm3.339-4.281.324.172c.219-.412.421-.833.599-1.26l-.339-.141c-.177.417-.369.828-.584 1.229zm1.677-5.167.365.052c.063-.464.109-.927.135-1.391l-.364-.021c-.027.453-.073.912-.136 1.36zm-.614 2.656.355.115c.14-.443.265-.896.369-1.349l-.359-.083c-.1.448-.224.891-.365 1.317zm-.938-11.932c.203.407.396.823.568 1.244l.339-.14c-.172-.427-.371-.86-.584-1.271zM11.063 31.224c.443.14.891.265 1.344.369l.083-.353a15.487 15.487 0 0 1-1.312-.365zm2.718.631c.459.063.927.109 1.391.135l.016-.369a15.064 15.064 0 0 1-1.36-.131zm9.318-1.923c-.401.204-.812.396-1.235.563l.141.344c.421-.177.855-.365 1.26-.579l.005-.005-.161-.328zM6.151 28.625c.365.281.751.557 1.141.801l.197-.301c-.38-.251-.755-.516-1.115-.792zm10.406 3.011.011.364c.463-.021.932-.052 1.396-.115l-.047-.359c-.448.057-.907.093-1.36.109zM8.495 30.14c.407.215.833.417 1.26.6l.141-.339a17.761 17.761 0 0 1-1.229-.589zm-4.386-3.421c.312.349.64.683.979.995l.251-.265a15.397 15.397 0 0 1-.953-.975zm15.151 4.584.079.359c.453-.099.907-.219 1.355-.355l-.109-.348a21.46 21.46 0 0 1-1.324.344zM28.24.172a3.583 3.583 0 0 0-3.584 3.583 3.584 3.584 0 0 0 3.584 3.589c4.781 0 4.781-7.172 0-7.172zm-7.808 20.421c0 .631.417.88 1.136.88.896 0 1.729-.525 1.729-1.353v-.86c-.308.147-.505.188-1.475.324-.979.145-1.391.405-1.391 1.009zM16 3.755c-6.76 0-12.24 5.48-12.24 12.24S9.24 28.24 16 28.24s12.24-5.485 12.24-12.245c0-6.755-5.48-12.24-12.24-12.24zM12.683 22.12H7.694v-8.032h1.025v7.125h3.969v.907zm5.51 0h-.829v-.896c-.541.76-1.077 1.057-1.927 1.057-1.125 0-1.839-.62-1.839-1.579v-4.359h.912v4c0 .692.463 1.135 1.192 1.135.959 0 1.573-.771 1.573-1.948v-3.187h.917zm-.709-11.193a3.583 3.583 0 1 1 7.166 0 3.583 3.583 0 0 1-7.166 0zm7.423 10.474v.692c-.297.079-.437.1-.625.1a.976.976 0 0 1-.953-.761 2.695 2.695 0 0 1-1.959.849c-1.172 0-1.896-.615-1.896-1.661 0-.703.339-1.224 1.011-1.5.36-.141.552-.188 1.855-.349.729-.088.959-.255.959-.64v-.245c0-.547-.464-.859-1.287-.859-.865 0-1.276.323-1.36 1.025h-.921c.057-1.333.916-1.869 2.312-1.869 1.423 0 2.167.547 2.167 1.572v3.219c0 .287.177.448.5.448.052 0 .099 0 .199-.02z"></path>
</svg>
<a aria-hidden="true" tabindex="-1" href="#lua-备忘清单"><span class="icon icon-link"></span></a>Lua 备忘清单</h1><div class="wrap-body">
<p>包含最重要概念、函数、方法等的 <a href="http://www.lua.org">Lua</a> 备忘单。 初学者的完整快速参考。</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#下载">下载</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#其它下载方式">其它下载方式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#hello-world">hello world</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#运行">运行</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#注释">注释</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#单行注释">单行注释</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#多行注释">多行注释</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#type-函数">type() 函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#number">number</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#string">string</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#">[[]]</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#字符串连接">字符串连接(..)</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#字符串长度">字符串长度(#)</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#table">table</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#迭代-table">迭代 table</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#指定键">指定键</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#变量">变量</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#默认值">默认值</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#全局和局部变量">全局和局部变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#赋值">赋值</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#交换变量">交换变量</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#赋值个数不一致">赋值个数不一致</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#运算符">运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#类型转换">类型转换</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#条件语句">条件语句</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#运算符-1">运算符</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#关系运算符">关系运算符</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#逻辑运算符">逻辑运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#while-循环">while 循环</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#if-语句">if 语句</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#if--elseif--else">if .. elseif() .. else</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#for-循环">for 循环</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#repeatuntil-循环">repeat...until 循环</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#break">break</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#另见">另见</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="下载"><a aria-hidden="true" tabindex="-1" href="#下载"><span class="icon icon-link"></span></a>下载</h3><div class="wrap-body">
<p>macos 使用 homebrew 下载</p>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ brew <span class="token function">install</span> lua
</span></code></pre>
<h4 id="其它下载方式"><a aria-hidden="true" tabindex="-1" href="#其它下载方式"><span class="icon icon-link"></span></a>其它下载方式</h4>
<ul>
<li><a href="https://luabinaries.sourceforge.net/download.html">下载地址</a> <em>(sourceforge.net)</em></li>
</ul>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># 查看 lua 是否安装成功</span>
</span><span class="code-line">$ lua <span class="token parameter variable">-v</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="hello-world"><a aria-hidden="true" tabindex="-1" href="#hello-world"><span class="icon icon-link"></span></a>hello world</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">#!/usr/bin/env lua</span>
</span><span class="code-line">
</span><span class="code-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></code></pre>
<h4 id="运行"><a aria-hidden="true" tabindex="-1" href="#运行"><span class="icon icon-link"></span></a>运行</h4>
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ lua ./hello.lua
</span><span class="code-line"><span class="token comment"># 或者也可以像 bash 脚本一样</span>
</span><span class="code-line">$ <span class="token function">chmod</span> +x hello.lua
</span><span class="code-line">./hello.lua
</span></code></pre>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="注释"><a aria-hidden="true" tabindex="-1" href="#注释"><span class="icon icon-link"></span></a>注释</h3><div class="wrap-body">
<h4 id="单行注释"><a aria-hidden="true" tabindex="-1" href="#单行注释"><span class="icon icon-link"></span></a>单行注释</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">-- 以两个减号开始</span>
</span></code></pre>
<h4 id="多行注释"><a aria-hidden="true" tabindex="-1" href="#多行注释"><span class="icon icon-link"></span></a>多行注释</h4>
<p>多行注释以 <code>--[[</code> 开头, 以 <code>]]</code> 结尾</p>
<pre class="wrap-text "><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">--[[
</span></span><span class="code-line"><span class="token comment">
</span></span><span class="code-line"><span class="token comment">]]</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="type-函数"><a aria-hidden="true" tabindex="-1" href="#type-函数"><span class="icon icon-link"></span></a>type() 函数</h3><div class="wrap-body">
<p>使用 <code>type()</code> 函数可以判断变量或者值的类型</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-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">true</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- boolean</span>
</span><span class="code-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></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="number"><a aria-hidden="true" tabindex="-1" href="#number"><span class="icon icon-link"></span></a>number</h3><div class="wrap-body">
<p>Lua 默认只有一种 number 类型 double (双精度) 类型</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token number">0.3</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>2e <span class="token operator">+</span> <span class="token number">10</span><span class="token punctuation">)</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="string"><a aria-hidden="true" tabindex="-1" href="#string"><span class="icon icon-link"></span></a>string</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">-- 使用 ''</span>
</span><span class="code-line"><span class="token keyword">local</span> str1 <span class="token operator">=</span> <span class="token string">'str1'</span>
</span><span class="code-line"><span class="token comment">-- 使用 ""</span>
</span><span class="code-line"><span class="token keyword">local</span> str2 <span class="token operator">=</span> <span class="token string">"str2"</span>
</span></code></pre>
<h4 id=""><a aria-hidden="true" tabindex="-1" href="#"><span class="icon icon-link"></span></a><code>[[]]</code></h4>
<p>使用 <code>[[]]</code> 跨行表示多个字符串</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> html <span class="token operator">=</span> <span class="token string">[[
</span></span><span class="code-line"><span class="token string">&#x3C;html>
</span></span><span class="code-line"><span class="token string">&#x3C;head>&#x3C;/head>
</span></span><span class="code-line"><span class="token string">&#x3C;body>
</span></span><span class="code-line"><span class="token string"> &#x3C;a href="https://www.twle.cn/">简单编程&#x3C;/a>
</span></span><span class="code-line"><span class="token string">&#x3C;/body>
</span></span><span class="code-line"><span class="token string">&#x3C;/html>
</span></span><span class="code-line"><span class="token string">]]</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>html<span class="token punctuation">)</span>
</span></code></pre>
<h4 id="字符串连接"><a aria-hidden="true" tabindex="-1" href="#字符串连接"><span class="icon icon-link"></span></a>字符串连接(<code>..</code>)</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"a"</span> <span class="token operator">..</span> <span class="token string">'b'</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">-- ab</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token number">157</span> <span class="token operator">..</span> <span class="token number">428</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">-- 157428</span>
</span></code></pre>
<h4 id="字符串长度"><a aria-hidden="true" tabindex="-1" href="#字符串长度"><span class="icon icon-link"></span></a>字符串长度(<code>#</code>)</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token operator">#</span><span class="token string">"string"</span><span class="token punctuation">)</span> <span class="token comment">-- 6</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="table"><a aria-hidden="true" tabindex="-1" href="#table"><span class="icon icon-link"></span></a>table</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> table <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
</span></code></pre>
<h4 id="迭代-table"><a aria-hidden="true" tabindex="-1" href="#迭代-table"><span class="icon icon-link"></span></a>迭代 table</h4>
<p>默认的初始索引会从 1 开始</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> array <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token string">"apple"</span><span class="token punctuation">,</span> <span class="token string">"pear"</span><span class="token punctuation">,</span> <span class="token string">"orange"</span><span class="token punctuation">,</span> <span class="token string">"grape"</span> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>array<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">-- apple</span>
</span><span class="code-line">
</span><span class="code-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>array<span class="token punctuation">)</span> <span class="token keyword">do</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span>k <span class="token operator">..</span> <span class="token string">" : "</span> <span class="token operator">..</span> v<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span><span class="code-line"><span class="token comment">-- 1 : apple</span>
</span><span class="code-line"><span class="token comment">-- 2 : pear</span>
</span><span class="code-line"><span class="token comment">-- 3 : orange</span>
</span><span class="code-line"><span class="token comment">-- 4 : grape</span>
</span></code></pre>
<h4 id="指定键"><a aria-hidden="true" tabindex="-1" href="#指定键"><span class="icon icon-link"></span></a>指定键</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> array <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
</span><span class="code-line">array<span class="token punctuation">.</span>one <span class="token operator">=</span> <span class="token string">"apple"</span>
</span><span class="code-line">array<span class="token punctuation">[</span><span class="token string">"two"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"peach"</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>array<span class="token punctuation">.</span>one<span class="token punctuation">)</span> <span class="token comment">-- apple</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>array<span class="token punctuation">.</span>two<span class="token punctuation">)</span> <span class="token comment">-- peach</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="变量"><a aria-hidden="true" tabindex="-1" href="#变量"><span class="icon icon-link"></span></a>变量</h3><div class="wrap-body">
<h4 id="默认值"><a aria-hidden="true" tabindex="-1" href="#默认值"><span class="icon icon-link"></span></a>默认值</h4>
<p>变量的默认值均是 nil</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">#!/usr/bin/env lua</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span> <span class="token comment">-- nil</span>
</span></code></pre>
<h4 id="全局和局部变量"><a aria-hidden="true" tabindex="-1" href="#全局和局部变量"><span class="icon icon-link"></span></a>全局和局部变量</h4>
<p>Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量</p>
<pre class="wrap-text "><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">#!/usr/bin/env lua</span>
</span><span class="code-line"><span class="token keyword">function</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">local</span> b <span class="token operator">=</span> <span class="token number">12</span>
</span><span class="code-line"> a <span class="token operator">=</span> <span class="token number">23</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span> <span class="token comment">-- 23</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span> <span class="token comment">-- nil</span>
</span></code></pre>
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap h3body-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="赋值"><a aria-hidden="true" tabindex="-1" href="#赋值"><span class="icon icon-link"></span></a>赋值</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line">a <span class="token operator">=</span> <span class="token string">"hello "</span> <span class="token operator">..</span> <span class="token string">"world"</span> <span class="token comment">-- 改变 变量</span>
</span><span class="code-line">t<span class="token punctuation">.</span>n <span class="token operator">=</span> t<span class="token punctuation">.</span>n <span class="token operator">+</span> <span class="token number">1</span> <span class="token comment">-- 改变 table</span>
</span></code></pre>
<hr>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token comment">-- 给多个变量赋值</span>
</span><span class="code-line">a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token operator">*</span>a <span class="token comment">--> a=10; b=20</span>
</span></code></pre>
<h4 id="交换变量"><a aria-hidden="true" tabindex="-1" href="#交换变量"><span class="icon icon-link"></span></a>交换变量</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> x<span class="token punctuation">,</span> y <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span>
</span><span class="code-line">x<span class="token punctuation">,</span> y <span class="token operator">=</span> y<span class="token punctuation">,</span> x
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span> y<span class="token punctuation">)</span> <span class="token comment">-- 3, 1</span>
</span></code></pre>
<hr>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> tab <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
</span><span class="code-line">tab<span class="token punctuation">.</span>one <span class="token operator">=</span> <span class="token number">2</span>
</span><span class="code-line">tab<span class="token punctuation">.</span>two <span class="token operator">=</span> <span class="token number">1</span>
</span><span class="code-line">
</span><span class="code-line">tab<span class="token punctuation">[</span><span class="token string">"one"</span><span class="token punctuation">]</span><span class="token punctuation">,</span> tab<span class="token punctuation">[</span><span class="token string">"two"</span><span class="token punctuation">]</span> <span class="token operator">=</span> tab<span class="token punctuation">.</span>two<span class="token punctuation">,</span> tab<span class="token punctuation">.</span>one
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>tab<span class="token punctuation">.</span>one<span class="token punctuation">,</span> tab<span class="token punctuation">.</span>two<span class="token punctuation">)</span> <span class="token comment">-- 1 2</span>
</span></code></pre>
<h4 id="赋值个数不一致"><a aria-hidden="true" tabindex="-1" href="#赋值个数不一致"><span class="icon icon-link"></span></a>赋值个数不一致</h4>
<ul class="style-round">
<li>
<p>如果变量个数<strong>大于</strong>值的个数,按变量个数补足 nil</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line">a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span>b<span class="token punctuation">,</span>c<span class="token punctuation">)</span> <span class="token comment">--> 1 3 nil</span>
</span></code></pre>
</li>
<li>
<p>如果变量个数<strong>小于</strong>值的个数,多余的值会被忽略</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line">a <span class="token operator">=</span> <span class="token number">1</span>
</span><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> a<span class="token punctuation">,</span> a <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span> a <span class="token operator">+</span> <span class="token number">2</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token comment">--> 1 2</span>
</span></code></pre>
</li>
</ul>
<!--rehype:className=style-round-->
<!--rehype:className=wrap-text -->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="运算符"><a aria-hidden="true" tabindex="-1" href="#运算符"><span class="icon icon-link"></span></a>运算符</h3><div class="wrap-body">
<table><thead><tr><th align="left">:-</th><th align="left">:-</th></tr></thead><tbody><tr><td align="left">+</td><td align="left">加法</td></tr><tr><td align="left">-</td><td align="left">减法</td></tr><tr><td align="left">*</td><td align="left">乘法</td></tr><tr><td align="left">/</td><td align="left">除法</td></tr><tr><td align="left">%</td><td align="left">取余,求出除法的余数</td></tr><tr><td align="left">^</td><td align="left">乘幂,计算次方</td></tr><tr><td align="left">-</td><td align="left">负号,取负值</td></tr></tbody></table>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">+</span> b<span class="token punctuation">)</span> <span class="token comment">-- 7</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">-</span> b<span class="token punctuation">)</span> <span class="token comment">-- 1</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">/</span> b<span class="token punctuation">)</span> <span class="token comment">-- 1.3333333333333</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">*</span> b<span class="token punctuation">)</span> <span class="token comment">-- 12</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">%</span> b<span class="token punctuation">)</span> <span class="token comment">-- 1</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">^</span> b<span class="token punctuation">)</span> <span class="token comment">-- 64.0</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="类型转换"><a aria-hidden="true" tabindex="-1" href="#类型转换"><span class="icon icon-link"></span></a>类型转换</h3><div class="wrap-body">
<ul class="style-round">
<li>
<p>在算术运算中string 类型会尝试自动转换为 number 时</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c <span class="token operator">=</span> <span class="token string">"str"</span><span class="token punctuation">,</span> <span class="token string">"1"</span><span class="token punctuation">,</span> <span class="token string">"2"</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">-- print(a + b) -- error</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>b <span class="token operator">+</span> c<span class="token punctuation">)</span> <span class="token comment">-- 3</span>
</span></code></pre>
</li>
<li>
<p>number 类型使用 <code>..</code> 会自动转换为 string</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token function">type</span><span class="token punctuation">(</span>a <span class="token operator">..</span> b<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
</li>
<li>
<p>其它方式的转换</p>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-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 function">tostring</span><span class="token punctuation">(</span><span class="token number">12</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- string</span>
</span><span class="code-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 function">tonumber</span><span class="token punctuation">(</span><span class="token string">"12"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">-- number</span>
</span></code></pre>
</li>
</ul>
<!--rehype:className=style-round-->
<!--rehype:className=wrap-text -->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="条件语句"><a aria-hidden="true" tabindex="-1" href="#条件语句"><span class="icon icon-link"></span></a>条件语句</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="运算符-1"><a aria-hidden="true" tabindex="-1" href="#运算符-1"><span class="icon icon-link"></span></a>运算符</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<h4 id="关系运算符"><a aria-hidden="true" tabindex="-1" href="#关系运算符"><span class="icon icon-link"></span></a>关系运算符</h4>
<table class="show-header"><thead><tr><th align="left">符号</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left"><code>==</code></td><td align="left">等于</td></tr><tr><td align="left"><code>~=</code></td><td align="left">不等于</td></tr><tr><td align="left"><code>></code></td><td align="left">大于</td></tr><tr><td align="left"><code>&#x3C;</code></td><td align="left">小于</td></tr><tr><td align="left"><code>>=</code></td><td align="left">大于等于</td></tr><tr><td align="left"><code>&#x3C;=</code></td><td align="left">小于等于</td></tr></tbody></table>
<!--rehype:className=show-header-->
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">&#x3C;</span> b<span class="token punctuation">)</span> <span class="token comment">-- false</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">&#x3C;=</span> b<span class="token punctuation">)</span> <span class="token comment">-- false</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">==</span> b<span class="token punctuation">)</span> <span class="token comment">-- false</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">~=</span> b<span class="token punctuation">)</span> <span class="token comment">-- true</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">></span> b<span class="token punctuation">)</span> <span class="token comment">-- true</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token operator">>=</span> b<span class="token punctuation">)</span><span class="token comment">-- true</span>
</span></code></pre>
<h4 id="逻辑运算符"><a aria-hidden="true" tabindex="-1" href="#逻辑运算符"><span class="icon icon-link"></span></a>逻辑运算符</h4>
<table class="show-header"><thead><tr><th align="left">符号</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left"><code>and</code></td><td align="left">逻辑与</td></tr><tr><td align="left"><code>or</code></td><td align="left">逻辑或操作符</td></tr><tr><td align="left"><code>not</code></td><td align="left">逻辑非操作符</td></tr></tbody></table>
<!--rehype:className=show-header-->
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> <span class="token keyword">true</span><span class="token punctuation">,</span> <span class="token keyword">false</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token keyword">and</span> b<span class="token punctuation">)</span> <span class="token comment">-- false</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token keyword">and</span> <span class="token keyword">not</span> b<span class="token punctuation">)</span> <span class="token comment">-- true</span>
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span>a <span class="token keyword">or</span> b<span class="token punctuation">)</span> <span class="token comment">-- true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="while-循环"><a aria-hidden="true" tabindex="-1" href="#while-循环"><span class="icon icon-link"></span></a>while 循环</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> num <span class="token operator">=</span> <span class="token number">1</span>
</span><span class="code-line"><span class="token keyword">while</span> <span class="token punctuation">(</span>num <span class="token operator">&#x3C;</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token keyword">do</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"num 的值为:"</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span>
</span><span class="code-line"> num <span class="token operator">=</span> num <span class="token operator">+</span> <span class="token number">1</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="if-语句"><a aria-hidden="true" tabindex="-1" href="#if-语句"><span class="icon icon-link"></span></a>if 语句</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">then</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"0 为 true"</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span></code></pre>
<h4 id="if--elseif--else"><a aria-hidden="true" tabindex="-1" href="#if--elseif--else"><span class="icon icon-link"></span></a>if .. elseif() .. else</h4>
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> age <span class="token operator">=</span> <span class="token number">27</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>age <span class="token operator">&#x3C;</span> <span class="token number">18</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">then</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"age 小于 18"</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">elseif</span> <span class="token punctuation">(</span>age <span class="token operator">&#x3C;</span> <span class="token number">25</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">then</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"age 小于 25"</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">elseif</span> <span class="token punctuation">(</span>age <span class="token operator">&#x3C;</span> <span class="token number">30</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">then</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"age 小于 30"</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">else</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"age 大于 30"</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"age 的值为 :"</span><span class="token punctuation">,</span> age<span class="token punctuation">)</span>
</span></code></pre>
<p><red>注意: </red><code>Lua</code><code>0</code><code>true</code>,但是 <code>Lua</code> 中的 <code>nil</code> 可以当作 <code>false</code></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="for-循环"><a aria-hidden="true" tabindex="-1" href="#for-循环"><span class="icon icon-link"></span></a>for 循环</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">for</span> i <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span> <span class="token keyword">do</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span></code></pre>
<ul>
<li>lua 中的 for 循环从参数 1 变化到参数 2每次变化以参数 3 为步长递增 i并执行一次表达式</li>
<li>参数三,是可选的,如果不指定,默认是 1</li>
<li>参数二只会在一开始求值,其后不会再进行运算</li>
</ul>
<pre class="style-round wrap-text"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> f <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span>x<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"in f(x) "</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token keyword">return</span> x <span class="token operator">*</span> <span class="token number">2</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span><span class="code-line">
</span><span class="code-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 function">f</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> <span class="token keyword">do</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token keyword">end</span>
</span></code></pre>
<!--rehype:className=style-round wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="repeatuntil-循环"><a aria-hidden="true" tabindex="-1" href="#repeatuntil-循环"><span class="icon icon-link"></span></a>repeat...until 循环</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> num <span class="token operator">=</span> <span class="token number">11</span>
</span><span class="code-line"><span class="token keyword">repeat</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"num 的值为: "</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span>
</span><span class="code-line"> num <span class="token operator">=</span> num <span class="token operator">+</span> <span class="token number">1</span>
</span><span class="code-line"><span class="token keyword">until</span> <span class="token punctuation">(</span>num <span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token comment">-- num 的值为11</span>
</span></code></pre>
<p><code>repeat...until</code> 循环的条件语句在当前循环结束后判断</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="break"><a aria-hidden="true" tabindex="-1" href="#break"><span class="icon icon-link"></span></a>break</h3><div class="wrap-body">
<pre class="language-lua"><code class="language-lua code-highlight"><span class="code-line"><span class="token keyword">local</span> num <span class="token operator">=</span> <span class="token number">11</span>
</span><span class="code-line"><span class="token keyword">repeat</span>
</span><span class="code-line"> <span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"num 的值为: "</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span>
</span><span class="code-line"> num <span class="token operator">=</span> num <span class="token operator">+</span> <span class="token number">1</span>
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token punctuation">(</span>num <span class="token operator">></span> <span class="token number">15</span><span class="token punctuation">)</span> <span class="token keyword">then</span>
</span><span class="code-line"> <span class="token keyword">break</span>
</span><span class="code-line"> <span class="token keyword">end</span>
</span><span class="code-line"><span class="token keyword">until</span> <span class="token punctuation">(</span>num <span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">)</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-not-exist"><div class="wrap-header h2wrap"><h2 id="另见"><a aria-hidden="true" tabindex="-1" href="#另见"><span class="icon icon-link"></span></a>另见</h2><div class="wrap-body">
<ul>
<li><a href="http://www.lua.org">Lua 官网</a> <em>(lua.org)</em></li>
<li><a href="https://wiki.luatos.com/luaGuide/introduction.html">luatos</a> <em>(wiki.luatos.com)</em></li>
<li><a href="https://www.twle.cn/l/yufei/lua53/lua-basic-index.html">Lua 教程</a> <em>(twle.cn)</em></li>
</ul>
</div></div><div class="h2wrap-body"></div></div></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 Kenny Wang.</footer></footer><script>
if(('onhashchange' in window) && ((typeof document.documentMode==='undefined') || document.documentMode==8)) {
window.onhashchange = function () {
anchorPoint()
updateAnchor()
};
}
function anchorPoint() {
const hash = window.location.hash?.replace(/^#/, '') || '';
const elm = document.getElementById(decodeURIComponent(hash));
Array.from(document.querySelectorAll('.h2wrap-body .wrap')).forEach((elm) => elm.classList.remove('active'))
if (elm?.tagName === 'H3') {
elm?.parentElement?.parentElement?.classList.add('active');
}
}
anchorPoint();
function updateAnchor(element) {
const anchorContainer = document.querySelectorAll('.menu-tocs .menu-modal a.tocs-link');
anchorContainer.forEach((tocanchor) => {
tocanchor.classList.remove('is-active-link');
});
const anchor = element || document.querySelector(`a.tocs-link[href='${decodeURIComponent(window.location.hash)}']`);
if (anchor) {
anchor.classList.add('is-active-link');
}
}
// toc 定位
updateAnchor()
const anchor = document.querySelectorAll('.menu-tocs .menu-modal a.tocs-link');
anchor.forEach((item) => {
item.addEventListener('click', (e) => {
updateAnchor()
})
})
</script></body>
</html>