码迷,mamicode.com
首页 > 其他好文 > 详细

第二章 类型与值 Lua程序设计第二版笔记

时间:2017-11-25 21:35:22      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:最大   包括   2.3   use   方法   类型   可变   function   ber   

--第二章 类型与值
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程序设计第二版笔记

标签:最大   包括   2.3   use   方法   类型   可变   function   ber   

原文地址:http://www.cnblogs.com/leosirius/p/7896326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!