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语言基础学习:安装Lua和Lua库管理工具-LMLPHP

这里有以下两种版本: 

  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中

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

添加完环境变量后可以使用 Ctrl + C 打开 CMD终端 ,输入lua或luaxx(xx版本号)测试下是否安装成功:

lua

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

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

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

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

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

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

 

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

luarocks

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

 编写并运行Lua脚本

 新建一个 .lua 文件,将以下代码复制粘贴到lua文件中,将文件命名为first_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方式

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

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

Luac方式 

  • 执行效率更高,因为字节码已经预编译,虚拟机可以直接执行。
  • 适用于生产环境,可以减少启动时间和提高运行性能。
luac -o output_file.luac first_lua.lua
lua output_file.luac

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

 

08-13 23:10