欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Lua脚本核心语法介绍

Lua脚本核心语法介绍

2025/2/22 2:03:00 来源:https://blog.csdn.net/ttyy1112/article/details/145683164  浏览:    关键词:Lua脚本核心语法介绍

Lua 是一种轻量级、高效的脚本语言,其解释器核心是用 C 语言编写的,因此具有出色的可移植性和嵌入性(可轻松集成到其他程序中)。以下是其核心语法特性:


一、基础语法特点

  1. 简洁的语法结构

    • 语句以换行或分号结束,无需强制分号
    • 注释:-- 单行注释--[[ 多行注释 ]]
  2. 动态类型系统

    • 变量无需声明类型,类型与值绑定:
      local a = 10     -- 整数
      a = "hello"      -- 切换为字符串
      a = 3.14         -- 切换为浮点数
      
  3. 变量作用域

    • 默认全局变量,local 关键字声明局部变量:
      global_var = 1    -- 全局变量
      local local_var = 2 -- 局部变量
      

二、核心数据类型

Lua 仅有 8 种基础类型:

nil        -- 空值(类似 null)
boolean    -- true/false
number     -- 整数或浮点数(内部统一为双精度)
string     -- 不可变字符串(用单引号或双引号)
function   -- 函数(支持闭包)
table      -- 表(核心数据结构,可模拟数组、字典、类等)
userdata   -- 用户自定义数据(用于与 C 交互)
thread     -- 协程(coroutine)

三、表(Table):核心数据结构

表是 Lua 的万能容器,可表示数组、字典、对象等:

-- 数组形式(索引默认从 1 开始)
local arr = {10, 20, "apple"}
print(arr[1]) -- 输出 10-- 字典形式
local dict = {name = "Lua", version = 5.4}
print(dict["name"]) -- 输出 "Lua"-- 混合结构
local mix = {"value1", key = "value2",[3] = 100  -- 显式指定数字索引
}

四、控制结构

  1. 条件语句

    if a > 10 thenprint(">10")
    elseif a == 0 thenprint("=0")
    elseprint("<10")
    end
    
  2. 循环

    -- while 循环
    local i = 1
    while i <= 5 doprint(i)i = i + 1
    end-- for 循环(数值)
    for i = 1, 5, 2 do  -- 起始值, 结束值, 步长(默认 1)print(i)       -- 输出 1, 3, 5
    end-- 泛型 for(遍历表)
    for k, v in pairs(dict) doprint(k, v)
    end
    

五、函数与闭包

  1. 函数定义

    function add(a, b)return a + b
    end-- 匿名函数
    local mul = function(a, b) return a * b end
    
  2. 多返回值与可变参数

    function swap(a, b)return b, a  -- 返回多个值
    endfunction sum(...)  -- ... 表示可变参数local s = 0for _, num in ipairs{...} dos = s + numendreturn s
    end
    
  3. 闭包

    function counter()local count = 0return function()count = count + 1return countend
    endlocal c = counter()
    print(c()) -- 输出 1
    print(c()) -- 输出 2
    

六、元表(Metatable)与元方法

元表用于自定义表的操作行为(类似运算符重载):

local t1 = {value = 5}
local t2 = {value = 3}-- 定义元表的 __add 方法
local mt = {__add = function(a, b)return {value = a.value + b.value}end
}setmetatable(t1, mt)
setmetatable(t2, mt)local t3 = t1 + t2
print(t3.value) -- 输出 8

七、协程(Coroutine)

Lua 原生支持协程(非抢占式多任务):

local co = coroutine.create(function()print("start")coroutine.yield()  -- 挂起协程print("end")
end)coroutine.resume(co)  -- 输出 "start"
coroutine.resume(co)  -- 输出 "end"

八、模块化

通过 require 加载模块:

-- 定义模块 mymodule.lua
local M = {}
function M.hello()print("Hello from module!")
end
return M-- 使用模块
local mod = require("mymodule")
mod.hello()

总结

Lua 的语法简洁高效,核心特性包括:

  1. 轻量级:解释器仅数百 KB,适合嵌入式场景。
  2. 表驱动设计:通过 tablemetatable 实现复杂逻辑。
  3. 协程支持:简化异步任务处理。
  4. 易嵌入性:通过 C API 可轻松嵌入其他程序(如游戏引擎、Nginx)。

典型应用场景:游戏脚本(如《魔兽世界》插件)、Redis 脚本、Nginx OpenResty 等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词