Lua变量不建议使用_加大写字母
严格区分大小写
Root 和 root是两个不同的变量
Lua变量不建议使用_加大写字母
严格区分大小写
Root 和 root是两个不同的变量
--tab中没有key的时候,自动从索引1开始
tab1 = {key1 = 100,key2 = "v2",4,10,"32"}
for k,v in pairs(tab1) do
print(k,v)
end
print(tab1[1]) --索引1
print(tab1["key2"]) --key2
table初始化的时候不输入key,只输入值得时候,系统会自动从索引1开始递增,如果要指定索引,请使用[],
例如:tab1={[5]="aaa"}
执行内容:
1 4
2 10
3 32
key2 v2
key1 100
4
v2
[Finished in 0.1s]
Lua函数的声明
使用关键字function
function fact(n)
if n == 1 then
return n
else
return n*fact(n-1)
end
end
print(fact(2))
print(fact(5))
fact2 = fact
print(fact2(5))
协同程序
aaa
mytable={"Lua","c#","java"}
table.concat(mytable)//字符串拼接
table.concat(mytable,“,”)//指定拼接符号
table.concat(mytable,“,”,1,3)//指定拼接符号和索引
--table添加和移除
table.insert(mytable,"php");/末尾插入数据
table.insert(mytable,2,"php");//在索引处插入
table.remove(mytable,2)//移除2号位置
元表:
mytale{"lue","c","c#"}--普通表
mymetable={}--元表:扩展普通表的行为
mytale=setmetable(mytale,mymetable);//设置元表
print("Hello world")
print("Hello world")
print("Hello world")
print(
SciTE Lua的IDE
print("Hello world!")
print("eee")
不要分号结尾
--单行注释
--[[
多行注释
--]]
1111111111111111111
05.print方法、单行和多行注释
1.print(“hello”)后面的“;”可加可不加。
2.print用来向控制台输出字符。
3.单行注释:--
eg:--print用来向控制台输出字符
4.多行注释:--[[
--]]
eg:--[[
print(“hello”)
print(“hello world”)
--]]
5.多行注释快速编程单行注释,在“--[[ --]]”前加一个--[[ --]]---[[ --]]
即使没有声明变量,变量也可以使用(即取值),只是数值为nil
Ascll 根据值 进行排序 从小到大
table.sort() table.sort()
table.maxn() table.maxn() table.maxn()
--table 即可当数组(假设),也可当字典
tab1 = {key1= "key1",key2= "key2"}
print(tab1.key1) --输出 key1
tab2 = {key3 = 11}
print(tab2.key3) --输出 11
tab3 = {"123","234"}
print(tab3[2]) --输出 234
-----------------------------------------------
--table 新增item,有两种表示方法,但是table.num无法实现,table.string却可以
tab4 = {};
tab4.key1 = "1"
print(tab4["key1"],tab4.key1); --输出 1 1
tab4["key2"] = "2"
print(tab4["key2"],tab4.key2); --输出 2 2
tab4[3] = 3
print(tab4[3]) --tab4.3 不可用,报错
tab4["4"] = "4"
print(tab4["4"]) --tab4.4 不可用,报错
-----------------------------------------------
--table Lua中的table的Key值比较特别
--实例化table,不加key值时会按从1到∞自动添加
--增添item时,Key的值还可以是字符串
--结论:table看似可以当做数组来用,但更像是一个字典
tab5 = {"yi","er","san","si"}
for a,b in pairs(tab5) do
print(a,b)
end
输出:
1 yi
2 er
3 san
4 si
tab5[2] = nil
tab5.key = "key"
tab5[10] = "十"
for a,b in pairs(tab5) do
print(a,b)
end
输出:
1 yi
3 san
4 si
key key
10 十
type()函数返回值为字符串
--函数总结
函数关键字前也有修饰符
可加local或不加
像变量一样表示全局函数或者局部函数
--函数的定义
function max(num1,num2)--比较两个数的大小
if(num1>num2) then
return num1
else
return num2
end
end
print(max(1,10))
--函数可以作为数据赋值 可以作为参数传递 相当于c#的委托与事件
temp = max
temp(40,3)
--匿名函数可以当做数据赋值
--可以当做参数传递
function myprint(num)
print(num)
end
function add(num1,num2,myprintfun)
numadd = num1+num2
myprintfun(numadd)
end
add(4,6,myprint)
--c#不支持返回多个值 lua支持 不知道现在c#改变了没有
--返回多个值 需要多个变量来接收
可变参数指的是函数的参数的个数是任意多个的
print函数的参数就是可变参数
--参数的位置用...代替
function test(...)--用于打印
print(arg)--注意参数arg 函数接受的多个参数都会被传入arg arg是表
--如果想访问表中的数据 需要 arg[索引] 访问
--还有个注意的地方 这然传入的数据保存在arg表中时 表的最后多了个值 这个值保存了表的数据个数
end
function test(...)
local arg = {...}--这样的表就是不带数据个数的表 避免了上面的问题
res = 0;
for k,v in pairs(arg) do
res = res + v
end
print(res)
end
test(1,2,3,4,5)
-- + - * / % 求幂