帮助:模块/数据类型

来自心百科,心灵的百科全书
< 模块

Lua中,一共有8种基本的数据类型,分别是:nilbooleanstringnumberfunctiontablethreaduserdata

其中threaduserdata在模块中是不会使用到的,所以我们只在此介绍其他6种数据类型。

总览

数据类型 说明
nil Lua语言中的空值,该类型只包括nil一个值。
boolean 布尔值,该类型只包含truefalse两个值。
number 数值,该类型用于保存数字类型的值。
string 字符串,该类型用于保存文本类型的值,具体请参考字符串页面的说明。
table 表,具体请参考页面的说明。
function 函数,该类型保存可以执行某一段操作的函数。如果您是个程序新手的话,可以理解为程序语言中的模板。具体请参考函数页面的说明。

nil

nil是Lua语言中的空值

所有未赋值过的变量,都将返回nil

为一个变量赋值nil相当于删除了这个变量,主要用于删除table里的变量。

local p = {}

function p.foo( frame )
    return a  --因为a并未被赋值过,所以其值为nil
end

return p

调用以上模块的foo函数,将会返回nil

boolean

布尔值类型只有两个值:truefalse,注意这2个值的所有字母均为小写。

布尔值会作为关系运算的结果,或用于逻辑运算之中。

在Lua中,只有falsenil会被视为“假”,其他值均为“真”(包括0)。

number

Lua的数值类型数据,存储时均为双精度浮点数(double)。

使用时,如果数值实际为整数(小数点后均为0),则该数值会被视为整数,否则视为浮点数。数值可以使用科学计数法存储。

以下均为有效的数值类型数据:

num = 5
num = 5.2
num = 5.0  -- 会被视为5
num = 5e3  -- 使用了科学计数法,即5*10^3=5000
num = 5e+3  -- 与上例结果相同,上例为省略了正号的结果
num = 5e-3  -- 即5*10^-3 = 0.005

数值型可以使用各种算术运算符

函数tonumber (e [, base])可以将参数e转换为number类型。参数base可以指定参数e的进制数,默认是10(十进制)。转换成功的话,将会返回number类型数据,失败的话将会返回nil。例如:

tonumber("100")  -- 结果为100,变量类型从string转变成number
tonumber("100", 2)  -- 结果为4,把"100"视为二进制数字进行转换
tonumber("1e2") -- 结果为100,即 1*10^2 = 100
tonumber("1e2", 2) -- 结果为nil,因为科学计数法只对十进制有效
tonumber("max100") -- 结果为nil,因为字符串中拥有无法转成数字的内容(max)
tonumber("200", 2) -- 结果为nil,因为二进制中只能存在1和0,所以2是非法字符,无法转换

string

Lua中,用于存储文本类型数据的数据类型,具体请参考字符串页面的说明。

table

Lua中的table是一种关联性的数据结构,使用键值对应一个任意一个数据类型,通过键值可以索引到对应的数据。

除了可以实现其他语言中数组和字典的功能外,Lua中的模块(module)和对象(Object)也是由table来实现的。

具体请参考以下页面的详细说明:

  • :整体介绍table的功能
  • 模块:介绍在Mediawiki中,使用table实现模块(Module)的功能
  • 面向对象:介绍table实现对象(Object)的功能

function

对于程序语言来讲,函数的作用,就和Mediawiki中的模板一样,可以将一些特定的工作抽取成一个函数,以便反复使用。

具体请参考函数页面的说明。