第二章 类型与值 Lua程序设计第二版笔记
Posted LeoSirius
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章 类型与值 Lua程序设计第二版笔记相关的知识,希望对你有一定的参考价值。
--第二章 类型与值
Lua是动态类型的语言,在语言中没有类型定义的语法,每个值都带有它自身的类型信息。
8种基础类型:nil boolean number string userdata function thread table
--2.1nil
--2.2boolean
Lua将false和nil都视为假,除此之外都是真,包括数字零和空字符串。
--2.3number
number表示双精度浮点数。通过重新编译Lua也可以使用其他类型来表示数字,具体做法见luaconf.h文件
--2.4string
字符串是不可变的值,不能像C中直接修改字符串中的某个字符,而是应该根据修改要求来创建一个新的字符串。
a = "one string" b = string.gsub(a, "one", "another") print(a) --> one string print(b) --> another string
Lua的字符串和其他Lua对象(table或函数)一样,都是自动内存管理机制所管理的对象。
Lua提供了字符串和数字的自动转换
print("10" + 1) --> 11 print("10+1") --> 10+1 print(10 .. 20) -->1020 (注意..接的后面的数字之间要空一格,不然第二个点会理解成小数点)
但是不推荐使用自动转换,推荐使用tonumber()和tostring()两个方法
--2.5table
Lua通过table来表示module、package、object。
table既不是值,也不是变量,而是对象。可以将table想象成一种动态分配的对象,程序仅持有一个对他们的引用。
table不能声明,而是通过构造表达式{}来创建。
table永远是匿名的,一个持有table的变量和table自身之间没有固定的关联性。
当一个程序再也没有对一个table引用时,Lua的GC最终会删除该table,并复用它的内存。
把table作为数组使用时,#将返回最后一个索引值。如果数组中间的值有nil,则#会认为这些nil就是数组结尾的标志。
如果要处理有中间有nil的数组,可由使用table.maxn,返回一个table的最大正索引
a = {} a[1000] = 1 print(table.maxn(a)) --> 10000
以上是关于第二章 类型与值 Lua程序设计第二版笔记的主要内容,如果未能解决你的问题,请参考以下文章