📜  Lua-数据类型(1)

📅  最后修改于: 2023-12-03 15:17:27.664000             🧑  作者: Mango

Lua-数据类型

Lua 是一种基于 C 语言的轻量级脚本语言,其支持8种不同的数据类型,本文介绍这些数据类型及其特点。

空值(nil)

Lua 中的空值用于表示一个变量未定义或者一个值被显式赋值为 nil。其特点包括:

  • Lua 的空值是一种类型,其值为 nil。
  • Lua 在赋值后,可以将一个变量指定为空值。
  • 在 Lua 中,if/else 语句可以使用空值进行条件判断。
-- 定义一个空值变量
local a = nil

-- 判断变量是否为空值
if a == nil then
    print("变量 a 是空值")
else
    print("变量 a 不是空值")
end
布尔值(boolean)

布尔值在 Lua 中用于表示真和假。其特点包括:

  • Lua 中有两种布尔值:true 和 false。
  • 在 Lua 中,判断真值和假值的条件表达式只有 nil 和 false 将被视为假。
-- 定义两个布尔值变量
local b1 = true
local b2 = false

-- 判断变量是否为真
if b1 then
   print("b1 为真")
end

-- 判断变量是否为假
if not b2 then
   print("b2 为假")
end
数值(number)

Lua 中的数值类型用于表示数字。其特点包括:

  • Lua 中有两种数值类型:整数和浮点数。
  • 整数类型没有限制,可以表示任意精度的整数。
  • 浮点类型则默认为双精度浮点数。
-- 定义两个数值变量
local n1 = 123
local n2 = 3.14

-- 打印两个数值变量
print(n1, n2)
字符串(string)

字符串在 Lua 中用于存储文本信息,其特点包括:

  • Lua 中的字符串是不可变的,一旦创建就不能修改。
  • 可以用单引号(')或双引号(")表示字符串。
  • Lua 支持使用转义字符来表示特殊字符,如 \n 表示换行符,\t 表示制表符等。
-- 定义两个字符串变量
local s1 = "hello"
local s2 = 'world'

-- 打印两个字符串变量
print(s1, s2)

-- 使用转义字符表示特殊字符
local s3 = "Lua\nProgramming"
print(s3)
函数(function)

函数在 Lua 中用于封装业务逻辑,其特点包括:

  • Lua 中的函数也是一种数据类型。
  • 变量可以存储函数和传递函数。
  • 函数可以返回多个值。
-- 定义一个函数变量
local function add(a, b)
   return a + b
end

-- 调用函数
local sum = add(2, 3)
print(sum)
表(table)

表在 Lua 中用于存储键值对,其特点包括:

  • Lua 中的表是一种关联数组,用于存储任意类型的值。
  • 表中的键可以是任意类型,但不能为 nil。
  • 表中的值可以是任意类型,包括 Lua 中的函数和表。
-- 定义一个表变量
local t = {name="Tom", age=18, gender="Male"}

-- 获取表中的值
print(t.name, t.age, t.gender)

-- 遍历表
for k,v in pairs(t) do
   print(k, v)
end
线程(thread)

线程在 Lua 中用于实现多任务。其特点包括:

  • Lua 中的线程是协程,与操作系统线程不同。
  • 线程可以暂停、恢复和删除。
  • 线程可以通过协作方式实现多任务。
-- 创建一个线程
local co = coroutine.create(function()
   print("Hello World!")
end)

-- 启动线程
coroutine.resume(co)
用户数据(userdata)

用户数据类型在 Lua 中用于封装 C/C++ 语言的数据类型,其特点包括:

  • 用户数据类型用于封装 C/C++ 语言的具体数据类型,如文件、指针等。
  • 可以在 Lua 脚本函数中使用 C/C++ 语言的函数或变量。
-- 定义一个用户数据变量
local f = io.open("main.lua", "r")

-- 使用 C/C++ 语言的函数,读取文件并打印内容
local content = f:read("*all")
print(content)

-- 关闭文件
f:close()

以上就是 Lua 中支持的数据类型,可以根据不同的需求选择合适的类型进行编程。