Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回
Lua中有八种基本类型: 1、nil (空)
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。nil 类型表示一种没有任何有效值,它只有一个值 – nil,例如打印一个没有赋值的变量,便会输出一个 nil 值:
上代码如图下:
事实证明temp的值为nil
nil也可以用来初始化 local temp = nil,当然你不初始化它也nil 。 2、boolean (布尔)
boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是"假",其他的都为"真":
上代码来验证如图下:
代码验证:
temp是一个没有赋值的变量 值为nil 说以为“假”。
temp2是一个赋值为“hello,world”变量 值不为nil 说以为“真”。
当然如果你将 local temp = false 这样temp肯定也为“假”了。 3、number (数字)
表示双精度类型的实浮点数,Lua 默认只有一种 number 类型 – double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 number 类型: 代码验证:
4、string (字符串)
1)字符串由一对双引号或单引号来表示 代码验证:
这里的字符串连接str3、str4用的是 …
2)也可以用 2 个方括号 “[[]]” 来表示"一块"字符串。 代码验证:
3)在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字: 代码验证:
5、function(函数)
由 C 或 Lua 编写的函数,在 Lua 中,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里: 代码验证:
以上代码注释的很清楚了,两个函数执行任何一个输出都是一样的。只是第一个涉及到了“类”和“构造函数”的概念怕新人看不懂所以加了一个下面的add()函数。函数后面还会细讲的 6、userdata (自定义类型)
表示任意存储在变量中的C数据结构
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。 7、thread(线程)
表示执行的独立线路,用于执行协同程序
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
线程这一块上代码验证还不是很好的表达,要涉及到好多代码块。后面我想想办法怎么去更好的讲解这一块。 8、table(表)
Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 table是lua的经典也是独有的,这一块篇幅是比较大的。我会在下一篇详细的介绍,并附上代码验证,敬请期待!
看完第二篇有的朋友会觉得不对啊,不是应该先讲一下lua的编译器吗。可以去看我之前的文章有介绍过,里面还有详细的打断点加调试等。
如果上面的努力能帮到你或者觉得还可以的话给赞,关注 鼓励!我会继续努力!
|
请发表评论