Lua基础介绍 一、Lua是什么 Lua是一种轻量小巧型的脚本语言,用C语言编写,它是在运行时动态编译,所以每次修改不需要重新编译链接执行。
二、Lua的用途 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的拓展和定制功能。常用于的应用场景:
游戏开发 - 作为游戏脚本语言,如魔兽世界、愤怒的小鸟等独立应用脚本 - 用于系统管理和自动化脚本Web应用脚本 - 如OpenResty、Kong等扩展和数据库插件 - 如MySQL Proxy和MySQL WorkBench安全系统 - 如入侵检测系统嵌入式系统 - 因其轻量级特性,适合资源受限的环境三、Lua语言特性 1. 动态类型 Lua是一种动态类型语言,变量不需要声明类型,类型信息与值相关联。这使得Lua非常灵活,但同时也需要开发者注意类型相关的错误。
lua-- 变量可以存储不同类型的值
local var = 42 -- 数字
var = "Hello" -- 字符串
var = true -- 布尔值
var = {} -- 表123452. 垃圾回收机制 Lua使用自动垃圾回收机制来管理内存。它采用标记清除算法,开发者可以通过collectgarbage函数控制垃圾回收器的行为。
lua-- 手动触发垃圾回收
collectgarbage("collect")
-- 获取内存使用情况
print("内存使用:", collectgarbage("count"), "KB")123453. 协程 Lua支持协程(coroutine),这是一种轻量级的线程,可以在不同的执行点之间切换。协程非常适合实现协作式多任务处理。
lua-- 创建协程
local co = coroutine.create(function()
print("协程开始执行")
coroutine.yield()
print("协程恢复执行")
end)
-- 启动协程
coroutine.resume(co) -- 输出: 协程开始执行
coroutine.resume(co) -- 输出: 协程恢复执行123456789104. 表(Table) Lua中的表是唯一的数据结构,可以用作数组、字典、对象等。
lua-- 作为数组使用
local arr = {1, 2, 3, 4, 5}
-- 作为字典使用
local dict = {
name = "Lua",
version = "5.4",
year = 2020
}
-- 作为对象使用
local person = {
name = "Alice",
age = 30,
greet = function(self)
print("Hello, I'm " .. self.name)
end
}
person:greet() -- 输出: Hello, I'm Alice12345678910111213141516171819四、学习Lua的资料 官方资源 Lua官网: www.lua.org(英文教程)Lua参考手册: Lua 5.4 Reference Manual在线教程 菜鸟教程: https://www.runoob.com/lua/lua-tutorial.htmlLua社区: http://luachina.cn/推荐书籍 《Programming in Lua》第四版 - Lua语言开发者编写,内容相对全面深刻《Lua程序设计》 - 中文版,适合初学者实践项目 OpenResty - 基于Nginx和Lua的Web平台Love2D - 基于Lua的2D游戏引擎Wireshark - 网络协议分析器,支持Lua脚本五、开发环境搭建 1. 安装Lua解释器 Windows bash# 下载预编译版本或使用包管理器
choco install lua12macOS bash# 使用Homebrew安装
brew install lua12Ubuntu/Debian bash# 使用apt安装
sudo apt-get install lua5.4122. 验证安装 bashlua -v13. 运行第一个Lua程序 lua-- hello.lua
print("Hello, Lua!")12bashlua hello.lua1六、基本语法概览 1. 注释 lua-- 单行注释
--[[
多行注释
可以跨越多行
--]]1234562. 变量声明 lua-- 全局变量
global_var = "I'm global"
-- 局部变量
local local_var = "I'm local"123453. 基本数据类型 lualocal nil_val = nil -- 空值
local bool_val = true -- 布尔值
local num_val = 42 -- 数字
local str_val = "Hello" -- 字符串
local func_val = function() end -- 函数
local table_val = {} -- 表123456七、总结 Lua是一种简洁、高效、可嵌入的脚本语言,具有以下优势:
轻量级 - 核心库很小,适合嵌入式应用高性能 - 执行速度快,内存占用少可扩展 - 易于与C/C++集成简单易学 - 语法简洁,概念清晰功能强大 - 支持多种编程范式无论是作为配置语言、脚本语言还是嵌入式语言,Lua都是一个优秀的选择。