lua学习2:《Lua程序设计(第2版)》第2章

本文介绍了Lua编程语言的基本类型、函数操作、字符串处理、转义字符、算术操作、表类型及其用法等核心内容。Lua作为一种轻量级、高性能的脚本语言,其灵活的变量赋值、强大的函数支持以及丰富的内置功能使其在游戏开发、网络编程等领域广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Lua中有8种基本类型:

nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)、table(表)

2、函数type可返回其类型的名称,例如:

print(type(10))-->number

print(type(type(x)))-->string

3、Lua与C不同:

(i)其变量没有类型,可以一个变量可以赋值一个整形数,接着也可以赋值为一个字符串,是合法的。

(ii)函数为第一类值,可以赋值给一个变量

(iii)在条件测试中,数字零和空字符串也视为”真“

4、一个全局变量第一次赋值前的默认值就是nil,将nil赋予一个全局变量等同于删除它

5、Lua中可以通过string.gsub()修改字符串的一部分

a = "one string"
b = string.gsub(a, "one", "another")
print(a)        -->one string
print(b)        -->another string
6、转义字符跟C语言类似,\a 响铃 \b退格 \f提供表格 \n换行 \r回车 \t水平tab \v垂直tab \\反斜杠 \"双引号 \'单引号

7、字面字符串,单引号、双引号皆可

8、可以用一对匹配的双方括号来界定一个字符串,就像写”块注释“那样。以这种形式书写的字符串可以延伸多行,Lua不会解释其中的转义序列。Lua同时支持[===[ 内容 ]===]这种风格的字符串,在‘[’ ‘[ 之间插入n个等号,字符串结尾‘]’ ‘]’之间有同样个数的等号即可。这种机制同样也适用于注释。

9、算术操作时,Lua会尝试将这个字符串转换成一个数字

print("10" + 1)-->11

虽然有这个功能但不推荐使用,最好显示的适用tonumber()函数

print(tonumber("10") + 1)   -->>11

10、在Lua中,”..“是字符串连接操作符,注意当直接在一个数字后面输入它的时候,必须要用一个空格来分隔他们,不然,Lua会将第一个点理解为一个小数点,

这里推荐使用它是前面都留一个空格。

print(10 .. 20)-->1020

将数字与一个空字符串相连接跟tostring()函数同样作用

print(tostring(10) == "10")<==>print(10 .. "" == "10")

11、在Lua5.1中,可以再字符串前放置操作符”#“来获取该字符串的长度

print(#"hello")--> 5

12、 table类型,table既不是”值“也不是”变量“,而是”对象“,table的创建是通过”构造表达式“完成的,最简单的构造表达式就是{}。table不同于数组,可以用任何不同的类型来做索引,并且同一个table的索引(key)和值(value)可以是不同类型。例如:

a = {} --创建一个talbe,并将它的引用存储到a。
table永远是"匿名的",一个持有table的变量与talbe自身之间没有固定的关联性。

a={}
a["x"] = 10;
b = a --b与a引用了同一个table
print(b["x"]) -- 10
b["x"] = 20
print(a["x"]) -- 20
a=nil --现在只有b还在引用table
b = nil --再也没有对table的引用了。
当一个程序再也没有对一个table的引用是,Lua的垃圾收集器最终会删除该table,并复用它的内存。

13、a.x = 10 等同于 a["x"] = 10,注意不等同于a[x]

14、虽然可以用任何值作为一个table的索引,也可以用任何数字作为数组索引的初始值。但就Lua的习惯而言,数组通常以1作为索引的起始值。当需要容纳新条目时,table会自动增长。当table的某个元素没有初始化时,它的内容就为nil。

a = {}
a[10000] = 1
print(table.maxn(a)) --
>10000

15、在Lua5.1中,长度操作符”#‘用于返回一个数组或线性表的最后一个索引值(或其大小)

16、table.maxn将返回一个table的最大索引数

17、注意数字0和字符“0”做索引为不同索引

18、function(函数)
lua中,函数是作为"第一类值"来看待的。表示函数可以存储在变量中,可以通过参数传递给其他函数,还可以作为其他函数的返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值