第二章:Lua基础语法与数据类型
- 作者
- Name
- 青玉白露
- Github
- @white0dew
- 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种基本数据类型:
- nil:表示无效值或不存在
- boolean:true或false
- number:表示实数(双精度浮点数)
- string:字符串
- function:函数
- userdata:用户数据
- thread:协程
- 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
我们将在后续章节深入探讨这些复杂数据类型。