logo

第二章:Lua基础语法与数据类型

作者
Modified on
Reading time
3 分钟阅读:..评论:..

2.1 注释和标识符

注释

Lua支持单行注释和多行注释:

-- 这是单行注释 --[[ 这是多行注释 可以跨越多行 ]]

标识符

标识符是用来命名变量、函数或其他用户定义的项目。Lua的标识符规则如下:

  • 由字母、数字和下划线组成
  • 不能以数字开头
  • 区分大小写

有效的标识符例子:

name Name name_1 _count

无效的标识符例子:

2name -- 不能以数字开头 name-1 -- 不能包含减号

2.2 变量和作用域

Lua中的变量默认是全局的,除非明确声明为局部变量。

a = 10 -- 全局变量 local b = 20 -- 局部变量

作用域

局部变量的作用域从声明点开始到所在语句块结束。

do local x = 10 print(x) -- 输出 10 end print(x) -- 输出 nil,x在这里不可见

2.3 基本数据类型

Lua有8种基本数据类型:

  1. nil:表示无效值或不存在
  2. boolean:true或false
  3. number:表示实数(双精度浮点数)
  4. string:字符串
  5. function:函数
  6. userdata:用户数据
  7. thread:协程
  8. table:表

本节我们主要关注前四种基本类型。

nil

nil是一种特殊的值,表示"无"或"不存在"。

print(a) -- 输出 nil(未定义的变量)

boolean

boolean类型有两个值:true和false。

local isTrue = true local isFalse = false

注意:在Lua中,只有false和nil被视为假,其他所有值(包括0和空字符串)都被视为真。

number

Lua使用双精度浮点格式表示number类型。

local int = 42 local float = 3.14 local sci = 1.2e-3 -- 科学记数法

string

字符串可以用单引号或双引号括起来。

local str1 = "Hello" local str2 = 'World'

多行字符串可以用 [[]] 括起来:

local multiline = [[ This is a multi-line string ]]

字符串连接使用 .. 操作符:

local name = "Lua" print("Hello, " .. name) -- 输出:Hello, Lua

2.4 运算符

Lua提供了以下几类运算符:

算术运算符

  • + (加)
  • - (减)
  • * (乘)
  • / (除)
  • % (取模)
  • ^ (幂)
  • - (一元负)
print(5 + 3) -- 输出:8 print(2 ^ 3) -- 输出:8 (2的3次方)

关系运算符

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

逻辑运算符

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

其他运算符

  • .. (字符串连接)
  • # (取长度操作符)
print("Hello" .. " World") -- 输出:Hello World print(#"Lua") -- 输出:3

2.5 复杂数据类型简介

虽然我们将在后续章节详细讨论,这里简单介绍两种重要的复杂数据类型:

function(函数)

函数是第一类值,可以存储在变量中、作为参数传递或作为返回值。

local function greet(name) print("Hello, " .. name) end greet("Lua") -- 输出:Hello, Lua

table(表)

表是Lua中唯一的复合数据类型,可用于表示数组、记录、集合等。

local person = { name = "Alice", age = 30 } print(person.name) -- 输出:Alice

我们将在后续章节深入探讨这些复杂数据类型。