对于脚本语言lua,它采用的是自动内存管理机制,所以使用时无需考虑内存的释放和分配,直接用即可
他的变量类型为以下8种:
nil nil是一种特殊的类型,它只有一个值nil , 主要功能就是为了区别lua中其他的值,Lua中的对于他的定义是一种“无效值”,类似于C++中的NULL
boolean 其实就是传统的布尔类型,其类型包含的值有2个 ,显而易见的: false 和true ,不过值得注意的是,在lua中的条件值 “真”和“假” 却不仅仅限于 false 和 true , 在lua中除了 false 和 nil ,其他所有的值都将被认作真 , 而 false 和 nil 都将会被认作是假
number 实数类型,其实说白了就是C++ 中的double类型,一个双精度浮点数。
string 字符串类型,lua中的字符统一采用8位字符编码,其实类似于C++中的string 类型,特点是这个字符串非常高效,在lua中处理100K或1M的字符串很正常
字面字符串需要一对 “” 或 ‘’ 来界定 :例如 a = "string"
顺便说一句,lua中支持转义字符序列,说白了就是‘\n’等于 回车 这种,具体的定义如下表:
\a |
响铃 |
\b |
退格 |
\f |
提供表格 |
\n |
换行 |
\r |
回车 |
\t |
水平tab |
\v |
垂直tab |
\\ |
反斜杠 |
\" |
双引号 |
\' |
单引号 |
还有lua中的字符串连接可以通过 .. 来实现 ,样例: str = "aaaa".."bbb"
table 表类型,类似于C++中的字典,允许以类似于键值对的方式来索引值
table的声明总是通过构造式{} 来实现 , 样例: b = {}
然后用法嘛!,就放荡多了,分别为
a[x] = 10
a.x = 10
a["x"]= 10
附注:上面2式是等价的,或者说 a.x = a["x"]
键的类型可以是 数值或者是字符串
顺便说一句 table的数值索引默认为 1
function 函数类型
在lua中函数是“第一类值”,也就是基础类型,这些函数可以储存在变量中,并可以被随意赋值给其他变量,感觉有点像函数指针,说白了,我们定义的函数变量其实都是一个函数指针,其值默认为我们声明的函数,我们通过常规的赋值来讲这些函数赋给其他的变量,对于lua中函数的调用方法与C++中一致,直接用就对了~~
顺便说一句,由于lua是弱类型,所以无法显式地声明返回值类型,任何函数都可以选择接收返回值,如果该函数本身不返回值的话,则默认返回的是nil
编写样例如下:
function Main()
end
Main = function()
end
上面2种写法等价
a = Main()
userdata 该类型可以将任意的c语言数据存储到lua变量中,但是只能进行赋值和相等性测试
thread lua中的线程变量类型