Lua语言简介
Lua是一种轻量、高效、可嵌入的脚本语言,由巴西里约热内卢天主教大学的研究小组于1993年开发,Lua的解释器非常小巧,编译后的体积很小(如完整解释器不过200KB),这使得它非常适合嵌入到其他应用程序中。Lua的执行速度快,内存占用低,特别适用于需要高性能的应用场景,支持面向过程编程、函数式编程以及通过表和闭包等机制支持面向对象编程的关键机制。
Lua拥有自动垃圾回收机制,可以自动管理内存,避免内存泄漏和其他内存管理问题,降低了程序员的负担,同时提供了强大的扩展机制,如元表(metatable)和元方法(metamethod)等,允许通过C/C++代码为Lua添加新的功能和特性。
在实际应用方面,Lua是许多游戏开发者的首选脚本语言,广泛用于定义游戏逻辑、控制游戏流程、处理游戏事件等。知名游戏如《魔兽世界》和《愤怒的小鸟》就使用了Lua脚本。Lua的轻量级和高效性使其成为嵌入式系统开发的理想选择。它可以用于嵌入式设备的控制和配置,如智能家居、物联网设备等(比如NodeMCU ESP8266)。通过Lua的Web框架(如OpenResty、Lapis等),开发者可以快速构建高性能的Web应用。
官方参考手册:Lua: reference manuals
官方免费教材:Lua Programming Gems
安装Lua和Lua库管理工具luarocks
Linux系统安装方法
Linux系统安装Lua语言及Lua外部库_linux lua-CSDN博客
Windows系统安装方法
Lua下载页面:Lua Binaries Download
这里有以下两种版本:
- lua-5.4.2_Win64_bin.zip:这个包包含Windows x64平台上的Lua可执行文件。如果只是想运行Lua脚本或者不需要将Lua集成到其他应用程序中,选择这个包就足够了。解压后可以直接运行lua.exe来执行Lua脚本。
- lua-5.4.2_Win64_dllw6_lib.zip:解压后可以在应用程序中使用Lua的DLL,并通过包含头文件来使用Lua的API。如果需要将Lua集成到编写的C/C++应用程序中或者需要使用Lua的API进行开发可以选择这个包。这个包包含Windows x64平台上的Lua动态链接库(DLL)和相关的头文件。
这里我下载的lua-5.4.2_Win64_bin.zip版本 ,解压后将lua54.exe的安装路径添加到环境变量的path中
添加完环境变量后可以使用 Ctrl + C 打开 CMD终端 ,输入lua或luaxx(xx版本号)测试下是否安装成功:
lua
接下来安装Lua的包管理工具LuaRocks,如果网速太慢可以下载我的资源链接,官方下载链接:https://luarocks.github.io/luarocks/releases/luarocks-3.11.1-windows-64.zip
将压缩包解压缩后可以看到里面有两个.exe文件,将这两个文件的安装路径添加环境变量path中
现在环境变量path中应该有lua.exe和luarocks.exe的安装路径
打开cmd终端查看是否安装成功
luarocks
编写并运行Lua脚本
新建一个 .lua 文件,将以下代码复制粘贴到lua文件中,将文件命名为first_lua.lua。
// first_lua.lua
N = 8function isplaceok(a, n, c)for i = 1, n - 1 doif (a[i] == c) or(a[i] - i == c - n) or(a[i] + i == c + n) thenreturn falseendendreturn true
endfunction printsolution(a)for i = 1, N dofor j = 1, N doio.write(a[i] == j and "X" or "-", " ")endio.write("\n")endio.write("\n")
endfunction AoLiGei(a, n)if n > N thenprintsolution(a)elsefor c = 1, N doif isplaceok(a, n, c) thena[n] = cAoLiGei(a, n + 1)endendend
endAoLiGei({}, 1)
在Lua中存在两种编译方式,lua(直接执行源代码)和 luac(执行编译后的字节码)
Lua方式
- 执行效率相对较低,因为每次执行都需要解析源代码。
- 适用于开发调试阶段,因为源代码易于阅读和修改。
lua first_lua.lua
Luac方式
- 执行效率更高,因为字节码已经预编译,虚拟机可以直接执行。
- 适用于生产环境,可以减少启动时间和提高运行性能。
luac -o output_file.luac first_lua.lua
lua output_file.luac