帮助:模块/数据类型
Lua中,一共有8种基本的数据类型,分别是:nil
、boolean
、string
、number
、function
、table
、thread
和userdata
。
其中thread
和userdata
在模块中是不会使用到的,所以我们只在此介绍其他6种数据类型。
总览
数据类型 | 说明 |
---|---|
nil | Lua语言中的空值 ,该类型只包括nil 一个值。
|
boolean | 布尔值,该类型只包含true 和false 两个值。
|
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
布尔值类型只有两个值:true
和false
,注意这2个值的所有字母均为小写。
在Lua中,只有false
和nil
会被视为“假”,其他值均为“真”(包括0)。
初来乍到?欢迎前往“[[关系运算是指两个值之间的关系,例如5 > 10 的结果就是false 。逻辑运算是指对布尔值进行运算,Lua中的逻辑运算包括 |
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来实现的。
具体请参考以下页面的详细说明:
function
对于程序语言来讲,函数的作用,就和Mediawiki中的模板一样,可以将一些特定的工作抽取成一个函数,以便反复使用。
具体请参考函数页面的说明。