Lua语言基础学习:安装Lua和Lua库管理工具

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

这里有以下两种版本:

  1. lua-5.4.2_Win64_bin.zip:这个包包含Windows x64平台上的Lua可执行文件。如果只是想运行Lua脚本或者不需要将Lua集成到其他应用程序中,选择这个包就足够了。解压后可以直接运行lua.exe来执行Lua脚本。
  2. 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版本号)测试下是否安装成功:

bash 复制代码
lua

接下来安装Lua的包管理工具LuaRocks,如果网速太慢可以下载我的资源链接,官方下载链接:https://luarocks.github.io/luarocks/releases/luarocks-3.11.1-windows-64.zip

将压缩包解压缩后可以看到里面有两个.exe文件,将这两个文件的安装路径添加环境变量path中

现在环境变量path中应该有lua.exe和luarocks.exe的安装路径

打开cmd终端查看是否安装成功

bash 复制代码
luarocks

编写并运行Lua脚本

新建一个 .lua 文件,将以下代码复制粘贴到lua文件中,将文件命名为first_lua.lua。

Lua 复制代码
// first_lua.lua
N = 8
 
function isplaceok(a, n, c)
    for i = 1, n - 1 do
        if (a[i] == c) or
        (a[i] - i == c - n) or
        (a[i] + i == c + n) then
            return false
        end
    end
    return true
end
 
function printsolution(a)
    for i = 1, N do
        for j = 1, N do
            io.write(a[i] == j and "X" or "-", " ")
        end
        io.write("\n")
    end
    io.write("\n")
end
 
function AoLiGei(a, n)
    if n > N then
        printsolution(a)
    else
        for c = 1, N do
            if isplaceok(a, n, c) then
                a[n] = c
                AoLiGei(a, n + 1)
            end
        end
    end
end
 
AoLiGei({}, 1)

在Lua中存在两种编译方式,lua(直接执行源代码)luac(执行编译后的字节码)

Lua方式

  • 执行效率相对较低,因为每次执行都需要解析源代码。
  • 适用于开发调试阶段,因为源代码易于阅读和修改。
bash 复制代码
lua first_lua.lua

Luac方式

  • 执行效率更高,因为字节码已经预编译,虚拟机可以直接执行。
  • 适用于生产环境,可以减少启动时间和提高运行性能。
bash 复制代码
luac -o output_file.luac first_lua.lua
bash 复制代码
lua output_file.luac
相关推荐
泡泡鱼(敲代码中)13 分钟前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
别动我齐刘海13 分钟前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
2501_9336707921 分钟前
平台招商运营校招能力模型:数据分析、SQL与增长场景拆解
开发语言
菜鸟~noob2331 小时前
【Bonjour】华为Peerium架构深度解析:从冯·诺依曼到百万处理器“一台计算机”,附MATLAB性能仿真【含matlab代码,可直接运行】
开发语言·matlab·华为·peerium
白远山1 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
水云桐程序员2 小时前
量子力学概论,量子力学概念总结
笔记·科技·学习·量子计算
shmily麻瓜小菜鸡4 小时前
TDD(测试驱动开发)详解
开发语言·javascript·typescript·node.js·ecmascript
三克的油4 小时前
java-学习1
java·开发语言·学习
j7~4 小时前
【C++微服务项目开发脚手架】(接口篇一)gflags + gtest + spdlog 接口学习笔记
c++·学习·gtest·项目开发·spdlog·gflags·c++项目微服务开发脚手架
星期八不上发条4 小时前
智能指针是什么?使用场景,循环引用解决办法,面试回答
开发语言·c++·stl