1.lua函数可以返回多个返回值,在return后要返回的值得列表即可返回多值
2.lua总是调整函数返回值的个数去适应调用环境,当作为一个语句调用函数时,所有返回值被忽略
3当作为表达式调用函数,有以下几种情况:
a.当调用作为表达式的最后一个参数或者仅有一个参数时,根据变量的个数函数尽可能多的返回多个值,不足的补nil,超出舍去
b.其他情况,函数调用仅仅返回第一个值
4.函数调用作为函数参数被调用时,和多值赋值一样
5.函数调用在表的构造函数中初始化时,和多值赋值一样
table的初始化1
table = { a = 10, b = 20, c = 30};
print(table["b"]);
table中每项都是key=value 形式;
key只能是字符串,但是不加引号;
通过key访问table时,这时,b必须有引号。
table的初始化2
table = {10, a = 20, 30,40};
print(table[1]);
print(table[2]);
print(table[3]);
table中可以出现没有key的项,这时,Lua会将table当做数组,项的key就是它在数组中的下标(从1开始)
例2中:table[1]为10; table[2]为30; table[3]为40、 即“a=20”会被跳过。
综上发现,table是一个数组和字典的混合体。
table初始化3
可以把table类型看作是一个数组。只是 C语言的数组,只能用正整数来作索引; 在Lua中,你可以用
任意类型的值来作数组的索引, 但这个值不能是 nil。 同样,在C语言中,数组的内容只允许一种类型;
在 Lua中,你也可以用任意类型的值来作数组的内容,nil也可以。
注意三点:
第一,所有元素之间,总是用逗号 "," 隔开;
第二,所有索引值都需要用 "["和"]" 括起来;如果是字符串,还可以去掉引号和中括号;即如果
没有[]括起,则认为是字符串索引
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1往后编;
例如:
tt = {"hello", 55}; //表中可以不同类型
table = { [tt] = "table",["flag"] = 5, key=11, 20 };
print(table.key); //11
print(table[tt]); //table
print(table["flag"]); //5
print(table[1]); //20
自己写的
local m = {80, tt = "table", 90, ["flag"] = 5, key=11, 20 }
print(m.flag)
print(m["flag"])
结果:5 5
local function m()
print("hello")
return 'a','b','c'
end
local e, r, t = 1, m(), 5
print(e, r, t)
print(m())
local function m()
print("hello")
return 'a','b','c'
end
local e, r, t = 1, m(), 5
print(e, r, t)
print(m())