Lua的类型与值

来源:互联网 发布:数据库用什么语言 编辑:程序博客网 时间:2024/05/16 09:21

首先Lua是一种动态类型的语言。在Lua中一共有8种基础类型:nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)和table(表)。

print(type("Hello world"))     -->stringprint(type(10.4*3))               -->numberprint(type(print))                   -->functionprint(type(type))                   -->functionprint(type(true))                    -->booleanprint(type(nil))                       -->nilprint(type(type(x)))               -->string
变量没有预定义的类型,任何变量可以包含任何变量的值。


nil是一种类型,它只有一个值nil,它的主要功能是区别于其他任何值。就像之前所说的,一个全局变量在第一次赋值前的默认值就是nil,将nil赋予一个全局变量等于删除它。Lua将nil用于表示一种”无效值的情况“,即没有任何有效值的情况。


boolean类型有两个可选值:false和true,这与传统的布尔值一样。然而boolean却不是一个条件之的唯一表示方式。在Lua中任何值都可以表示一个条件。Lua将false和nil作为”假“,而将除此之外的其他值视为“真”。还有一点需注意,Lua在条件测试中,将数字零和空字符串也都视为”真“。


number类型用于表示实数。Lua没有整数类型,因为没有必要。书写一个数字常量时,可以使用普通的写法,也可以使用科学技术法。


Lua中的字符串时不可变的值。不能像在C语言中那样直接字符串的某个字符,而是应该根据修改要求来创建一个新的字符串。Lua的字符串和其他Lua对象一样,都是自动管理内存机制,不需要担心字符串的分配和释放,并且Lua的字符串小到只包含一个字母,大到可以包含整本书。在Lua中100K到1M的字符串时很常见的。字面字符串需要以一对匹配的单引号或双引号来界定。


table类型实现了”关联数组“。它是一种具有特殊索引的数组。不仅可以通过整数来索引它,还可以使用字符串或其他类型的值(除了nil)来索引它。此外table没有固定的大小,可以动态的添加任意数量的元素到一个table中。table是Lua主要的数据结构机制,具有强大的功能。当一个程序再也没有对一个table的引用时,Lua的垃圾收集器最终会删除该table,并复用它的内存。和全局变量一样,当table的某个元素没有初始化时,它的内容就为nil。另外还可以像全局变量一样,将nil赋予table的某个元素来删除它。









0 0
原创粉丝点击