前言
Lua 是一种轻量级、快速、并且非常灵活的脚本语言,最早由巴西的 Pontifícia Universidade Católica do Rio de Janeiro 的一组研究人员于 1993 年开发。Lua 以其简单易学、嵌入性强以及高效性而著称,广泛应用于游戏开发、嵌入式系统、网络服务等领域。
1 安装
1.1 windows
下载
https://github.com/rjpcomputing/luaforwindows/releases/tag/v5.1.5-52
2 变量
2.1 数据类型判断
local num = 32
local str = '有勇气的牛排'
local status = true
local kong = nil
print(type(num))
print(type(str))
print(type(status))
print(type(kong))
2.2 空 nil
最比较的时候需要添加 引号
print("=== 空比较 ===")
print(type(kong) == nil)
print(type(kong) == 'nil')

原创:有勇气的牛排
https://www.couragesteak.com/article/476
2.3 布尔 boolean
nil、0都是false
if false or nil then
print('至少一个是true')
else
print('false 和 nil 都是 false')
end
if 0 then
print('数字0是true')
else
print('数字0是false')
end

2.4 字符串 string
str = '有勇气的牛排'
str2 = [[有勇气的牛排2]]
print(str)
print(str2)
2.5 table 表
table_data = {
name = "有勇气的牛排",
role = 999,
"val3",
}
print(table_data)
table_data['role'] = 5
table_data['role'] = table_data['role'] + 1
for key, value in pairs(table_data) do
print(key, value)
end
table 的索引从1开始
table_data = {
"A",
"B",
"C",
}
print(table_data)
for key, value in pairs(table_data) do
print(key, value)
end
3 函数
单个返回值
function add(a, b)
return a + b
end
local result = add(5, 3)
print("5 + 3 =", result)
多个返回值
function arithmetic(a, b)
local sum = a + b
local difference = a - b
return sum, difference
end
local sum, difference = arithmetic(10, 4)
print("Sum:", sum)
print("Difference:", difference)
默认参数
function greet(name, greeting)
greeting = greeting or "Hello"
return greeting .. ", " .. name
end
local message1 = greet("Alice")
print(message1)
local message2 = greet("Bob", "Good morning")
print(message2)
4 条件判断
local age = 18
if age >= 18 then
print("成年人")
else
print("未成年人")
end
5 循环
for循环
for i = 1, 5 do
print(i)
end
<h2><a id="_0"></a>前言</h2>
<p>Lua 是一种轻量级、快速、并且非常灵活的脚本语言,最早由巴西的 Pontifícia Universidade Católica do Rio de Janeiro 的一组研究人员于 1993 年开发。Lua 以其简单易学、嵌入性强以及高效性而著称,广泛应用于游戏开发、嵌入式系统、网络服务等领域。</p>
<h2><a id="1__4"></a>1 安装</h2>
<h3><a id="11_windows_6"></a>1.1 windows</h3>
<p>下载</p>
<p>https://github.com/rjpcomputing/luaforwindows/releases/tag/v5.1.5-52</p>
<h2><a id="2__14"></a>2 变量</h2>
<h3><a id="21__16"></a>2.1 数据类型判断</h3>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-comment">-- 数字 number</span>
<span class="hljs-keyword">local</span> num = <span class="hljs-number">32</span>
<span class="hljs-comment">-- 字符串 string</span>
<span class="hljs-keyword">local</span> str = <span class="hljs-string">'有勇气的牛排'</span>
<span class="hljs-comment">-- 布尔 boolean</span>
<span class="hljs-keyword">local</span> <span class="hljs-built_in">status</span> = <span class="hljs-literal">true</span>
<span class="hljs-comment">-- 空 nil 也可以看做false</span>
<span class="hljs-keyword">local</span> kong = <span class="hljs-literal">nil</span>
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(num))
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(str))
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(<span class="hljs-built_in">status</span>))
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(kong))
</code></div></pre>
<h3><a id="22__nil_37"></a>2.2 空 nil</h3>
<p>最比较的时候需要添加 引号</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-built_in">print</span>(<span class="hljs-string">"=== 空比较 ==="</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(kong) == <span class="hljs-literal">nil</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(kong) == <span class="hljs-string">'nil'</span>) <span class="hljs-comment">-- 比较空:需要加引号</span>
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/eda14fbd457805bceec36f31d08f2e3e.png" alt="image20240820153413542.png" /></p>
<p>原创:有勇气的牛排<br />
<a href="https://www.couragesteak.com/article/476" target="_blank">https://www.couragesteak.com/article/476</a></p>
<h3><a id="23__boolean_52"></a>2.3 布尔 boolean</h3>
<p>nil、0都是false</p>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">if</span> <span class="hljs-literal">false</span> <span class="hljs-keyword">or</span> <span class="hljs-literal">nil</span> <span class="hljs-keyword">then</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">'至少一个是true'</span>)
<span class="hljs-keyword">else</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">'false 和 nil 都是 false'</span>)
<span class="hljs-keyword">end</span>
<span class="hljs-keyword">if</span> <span class="hljs-number">0</span> <span class="hljs-keyword">then</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">'数字0是true'</span>)
<span class="hljs-keyword">else</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">'数字0是false'</span>)
<span class="hljs-keyword">end</span>
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/f372641b08812643cc41c5067b76d05f.png" alt="image20240820153705134.png" /></p>
<h3><a id="24__string_72"></a>2.4 字符串 string</h3>
<pre><div class="hljs"><code class="lang-lua">str = <span class="hljs-string">'有勇气的牛排'</span>
str2 = <span class="hljs-string">[[有勇气的牛排2]]</span>
<span class="hljs-built_in">print</span>(str)
<span class="hljs-built_in">print</span>(str2)
</code></div></pre>
<h3><a id="25_table__82"></a>2.5 table 表</h3>
<pre><div class="hljs"><code class="lang-lua">table_data = {
name = <span class="hljs-string">"有勇气的牛排"</span>,
role = <span class="hljs-number">999</span>,
<span class="hljs-string">"val3"</span>,
}
<span class="hljs-built_in">print</span>(table_data)
table_data[<span class="hljs-string">'role'</span>] = <span class="hljs-number">5</span>
table_data[<span class="hljs-string">'role'</span>] = table_data[<span class="hljs-string">'role'</span>] + <span class="hljs-number">1</span>
<span class="hljs-keyword">for</span> key, value <span class="hljs-keyword">in</span> <span class="hljs-built_in">pairs</span>(table_data) <span class="hljs-keyword">do</span>
<span class="hljs-built_in">print</span>(key, value)
<span class="hljs-keyword">end</span>
</code></div></pre>
<p>table 的索引从1开始</p>
<pre><div class="hljs"><code class="lang-lua">table_data = {
<span class="hljs-string">"A"</span>,
<span class="hljs-string">"B"</span>,
<span class="hljs-string">"C"</span>,
}
<span class="hljs-built_in">print</span>(table_data)
<span class="hljs-keyword">for</span> key, value <span class="hljs-keyword">in</span> <span class="hljs-built_in">pairs</span>(table_data) <span class="hljs-keyword">do</span>
<span class="hljs-built_in">print</span>(key, value)
<span class="hljs-keyword">end</span>
</code></div></pre>
<h2><a id="3__117"></a>3 函数</h2>
<h3><a id="_119"></a>单个返回值</h3>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-comment">-- 定义一个简单的加法函数</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span><span class="hljs-params">(a, b)</span></span>
<span class="hljs-keyword">return</span> a + b
<span class="hljs-keyword">end</span>
<span class="hljs-comment">-- 调用函数并打印结果</span>
<span class="hljs-keyword">local</span> result = add(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">"5 + 3 ="</span>, result)
</code></div></pre>
<h3><a id="_132"></a>多个返回值</h3>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-comment">-- 定义一个函数,同时返回加法和减法结果</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">arithmetic</span><span class="hljs-params">(a, b)</span></span>
<span class="hljs-keyword">local</span> sum = a + b
<span class="hljs-keyword">local</span> difference = a - b
<span class="hljs-keyword">return</span> sum, difference
<span class="hljs-keyword">end</span>
<span class="hljs-comment">-- 调用函数并捕获多个返回值</span>
<span class="hljs-keyword">local</span> sum, difference = arithmetic(<span class="hljs-number">10</span>, <span class="hljs-number">4</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">"Sum:"</span>, sum) <span class="hljs-comment">-- 输出 14</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">"Difference:"</span>, difference) <span class="hljs-comment">-- 输出 6</span>
</code></div></pre>
<h3><a id="_148"></a>默认参数</h3>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-comment">-- 定义一个函数,第二个参数具有默认值</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">greet</span><span class="hljs-params">(name, greeting)</span></span>
greeting = greeting <span class="hljs-keyword">or</span> <span class="hljs-string">"Hello"</span>
<span class="hljs-keyword">return</span> greeting .. <span class="hljs-string">", "</span> .. name
<span class="hljs-keyword">end</span>
<span class="hljs-comment">-- 调用函数,使用默认的问候语</span>
<span class="hljs-keyword">local</span> message1 = greet(<span class="hljs-string">"Alice"</span>)
<span class="hljs-built_in">print</span>(message1) <span class="hljs-comment">-- 输出 "Hello, Alice"</span>
<span class="hljs-comment">-- 调用函数,指定问候语</span>
<span class="hljs-keyword">local</span> message2 = greet(<span class="hljs-string">"Bob"</span>, <span class="hljs-string">"Good morning"</span>)
<span class="hljs-built_in">print</span>(message2) <span class="hljs-comment">-- 输出 "Good morning, Bob"</span>
</code></div></pre>
<h2><a id="4__166"></a>4 条件判断</h2>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-keyword">local</span> age = <span class="hljs-number">18</span>
<span class="hljs-keyword">if</span> age >= <span class="hljs-number">18</span> <span class="hljs-keyword">then</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">"成年人"</span>)
<span class="hljs-keyword">else</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">"未成年人"</span>)
<span class="hljs-keyword">end</span>
</code></div></pre>
<h2><a id="5__177"></a>5 循环</h2>
<h3><a id="for_179"></a>for循环</h3>
<pre><div class="hljs"><code class="lang-lua"><span class="hljs-comment">-- 循环</span>
<span class="hljs-keyword">for</span> i = <span class="hljs-number">1</span>, <span class="hljs-number">5</span> <span class="hljs-keyword">do</span>
<span class="hljs-built_in">print</span>(i)
<span class="hljs-keyword">end</span>
</code></div></pre>
留言