《Lua快速入门》2.Lua的基本语法

Lua 是一种动态类型语言,变量无需声明类型,类型信息在运行时确定。变量的命名规则如下:- 变量名由字母、数字和下划线组成,但不能以数字开头。- 变量名区分大小写。

Lua 的基本语法

1. 变量与数据类型

1.1 变量

Lua 是一种动态类型语言,变量无需声明类型,类型信息在运行时确定。变量的命名规则如下:

  • 变量名由字母、数字和下划线组成,但不能以数字开头。
  • 变量名区分大小写。
  • 避免使用 Lua 的保留关键字(如 andorif 等)。
1.1.1 变量的声明与赋值

Lua 中的变量通过赋值语句声明。未赋值的变量默认值为 nil

a = 10          -- 全局变量
local b = 20    -- 局部变量
print(a, b)     -- 输出: 10 20
1.1.2 变量的作用域
  • 全局变量:默认情况下,变量是全局的,可以在整个程序中访问。
  • 局部变量:使用 local 关键字声明的变量是局部的,作用域仅限于当前代码块。
local x = 5
if true then
    local y = 10
    print(x, y)  -- 输出: 5 10
end
print(y)        -- 输出: nil (y 是局部变量,超出作用域)

1.2 数据类型

Lua 支持以下基本数据类型:

数据类型描述
nil表示无效值或空值,类似于其他语言中的 null
boolean布尔类型,取值为 truefalse
number数值类型,包括整数和浮点数(Lua 5.3 引入整数类型)。
string字符串类型,使用单引号或双引号表示。
table表类型,Lua 中唯一的数据结构,可以表示数组、字典等。
function函数类型,Lua 中的函数是一等公民,可以作为变量传递。
userdata用户自定义数据类型,通常用于与 C 语言交互。
thread协程类型,用于实现并发编程。
1.2.1 类型检查与转换
  • 使用 type() 函数可以获取变量的类型。
  • Lua 会自动在字符串和数字之间进行类型转换。
print(type(10))         -- 输出: number
print(type("hello"))    -- 输出: string
print(type(true))       -- 输出: boolean

local num = "10" + 5    -- 字符串 "10" 自动转换为数字
print(num)              -- 输出: 15
1.2.2 字符串
  • 字符串可以使用单引号或双引号表示。
  • 多行字符串可以使用 [[...]] 表示。
  • 字符串连接使用 .. 运算符。
local str1 = "Hello"
local str2 = 'Lua'
local str3 = [[
This is a
multi-line string.
]]
print(str1 .. " " .. str2)  -- 输出: Hello Lua
1.2.3 表(Table)

表是 Lua 中唯一的数据结构,可以表示数组、字典、对象等。

local arr = {1, 2, 3}           -- 数组
local dict = {name = "Lua", version = "5.4"}  -- 字典
print(arr[1], dict["name"])     -- 输出: 1 Lua

2. 运算符

2.1 算术运算符

Lua 支持常见的算术运算符:

  • +(加)、-(减)、*(乘)、/(除)、%(取模)、^(幂运算)。
local a, b = 10, 3
print(a + b)  -- 输出: 13
print(a ^ b)  -- 输出: 1000

2.2 关系运算符

Lua 的关系运算符用于比较两个值:

  • ==(等于)、~=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)。
print(10 == 10)  -- 输出: true
print(10 ~= 5)   -- 输出: true

2.3 逻辑运算符

Lua 的逻辑运算符包括:

  • and(与)、or(或)、not(非)。
print(true and false)  -- 输出: false
print(true or false)   -- 输出: true
print(not true)        -- 输出: false

2.4 其他运算符

  • ..:字符串连接。
  • #:获取字符串长度或表的长度。
local str = "Hello"
print(#str)  -- 输出: 5

3. 条件控制

3.1 if 语句

Lua 的 if 语句用于条件判断,语法如下:

if condition then
    -- 条件为真时执行的代码
elseif condition2 then
    -- 条件2为真时执行的代码
else
    -- 其他情况执行的代码
end

示例:

local score = 85
if score >= 90 then
    print("优秀")
elseif score >= 60 then
    print("及格")
else
    print("不及格")
end

3.2 if 的简写形式

Lua 支持简写的 if 语句:

local result = (score >= 60) and "及格" or "不及格"
print(result)

4. 循环结构

4.1 while 循环

while 循环在条件为真时重复执行代码块:

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

4.2 for 循环

Lua 的 for 循环有两种形式:

  • 数值 for 循环
    for i = 1, 5 do
        print(i)
    end
    
  • 泛型 for 循环(用于遍历表):
    local t = {1, 2, 3}
    for k, v in ipairs(t) do
        print(k, v)
    end
    

4.3 repeat-until 循环

repeat-until 循环先执行代码块,然后检查条件:

local i = 1
repeat
    print(i)
    i = i + 1
until i > 5

5. 总结

Lua 的基本语法简洁而强大,涵盖了变量与数据类型、运算符、条件控制和循环结构等核心内容。通过掌握这些基础知识,您可以编写简单的 Lua 程序,并为后续学习 Lua 的高级特性打下坚实的基础。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页