On this page

Lua 基本语法

Lua 基本语法

Lua 是一种轻量级脚本语言,语法简洁而强大。以下是 Lua 的基本语法要点:

1. 注释

-- 单行注释

--[[
  多行注释
  可以跨越多行
]]

2. 变量与赋值

-- 局部变量 (推荐使用)
local name = "Lua"

-- 全局变量 (不加local)
version = 5.4

-- 多重赋值
local a, b = 10, 20

-- 交换变量值
a, b = b, a

-- nil 表示空值或无值
local empty = nil

3. 数据类型

Lua 是动态类型语言,有8种基本类型:

local n = 123          -- number (整数和浮点数都用number表示)
local s = "hello"      -- string
local b = true         -- boolean
local t = {1,2,3}      -- table
local f = function() end -- function
local nilValue = nil    -- nil
local u = io.stdin      -- userdata
local co = coroutine.create(function() end) -- thread

4. 控制结构

条件语句

-- if-elseif-else
local age = 18
if age < 13 then
  print("儿童")
elseif age < 18 then
  print("青少年")
else
  print("成人")
end

循环结构

-- while 循环
local i = 1
while i <= 5 do
  print(i)
  i = i + 1
end

-- repeat-until 循环 (类似do-while)
local j = 1
repeat
  print(j)
  j = j + 1
until j > 5

-- for 循环 (数值型)
for k = 1, 10, 2 do  -- 从1到10,步长为2
  print(k)
end

-- 泛型for循环 (遍历表)
local colors = {"red", "green", "blue"}
for index, value in ipairs(colors) do
  print(index, value)
end

5. 函数

-- 定义函数
local function greet(name)
  return "Hello, " .. name
end

-- 调用函数
print(greet("World")) -- 输出: Hello, World

-- 可变参数函数
local function sum(...)
  local result = 0
  for _, v in ipairs({...}) do
    result = result + v
  end
  return result
end

print(sum(1,2,3,4)) -- 输出: 10

-- 匿名函数/闭包
local square = function(x) return x*x end
print(square(5)) -- 输出: 25

6. 表(Table)

表是Lua中唯一的数据结构,可作数组、字典、对象等使用:

-- 数组式表
local fruits = {"apple", "banana", "orange"}
print(fruits[1]) -- 注意: Lua索引从1开始!

-- 字典式表
local person = {
  name = "Alice",
  age = 25,
  greet = function(self)
    print("Hi, I'm " .. self.name)
  end
}

print(person.name) -- 输出: Alice
person:greet()    -- 输出: Hi, I'm Alice

-- 混合表
local mixed = {
  "value1",       -- 隐式键1
  "value2",       -- 隐式键2
  key3 = "value3",
  key4 = "value4"
}

7. 字符串操作

local str1 = "Hello"
local str2 = "Lua"

-- 连接字符串
local greeting = str1 .. " " .. str2

-- 字符串长度
print(#greeting) -- 输出: 10

-- 多行字符串
local multi = [[
这是
多行
字符串
]]

-- 字符串常用函数
print(string.upper("hello")) -- 输出: HELLO
print(string.lower("WORLD")) -- 输出: world
print(string.sub("Lua programming", 5, 11)) -- 输出: progra

8. 模块系统

-- 定义模块 mymodule.lua
local M = {}

function M.sayHello()
  print("Hello from module!")
end

return M

-- 使用模块
local mymodule = require("mymodule")
mymodule.sayHello()

这些基本语法涵盖了Lua编程的核心概念,掌握了这些内容就可以开始编写Lua程序了。Lua的语法设计简洁但功能强大,特别适合嵌入应用程序作为脚本语言使用。