第二章 类型与值 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

 

转载于:https://www.cnblogs.com/leosirius/p/7896326.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值