1.当右值
Lua
function show(a,b)
print(a,b);
end
--直接调用
show(123,"acn");
--当右值,赋值给一个变量
func1=show;
func1("123",890);
--匿名函数当右值
fun2=function (a,b)
print(a,b);
end
fun2(890,"aaa");
运行结果:
Lua
123 acn
123 890
890 aaa
2.当参数
Lua
function show(a,b)
print(a,b);
end
function func1(fun,a,b)
fun(a,b);
end
func1(show,"123",120);
--func2(function (a,b) print(a,b) end,"uio","789");
3.当返回值
Lua
function show(a,b)
print(a,b);
end
function func1()
return show;
end
fun=func1();
fun("123",789);
func1()("zjkl","oooo");
匿名函数当返回值
Lua
function show(a,b)
print(a,b);
end
function func2()
return function (a,b)
print(a,b);
end
end
fun2=func2();
fun2("123",789);
func2()("zjkl","oooo");
多返回值
Lua
function func1(a,b)
print("func1",a,b);
end
function func2()
function func2_son1(a,b)
print("son1",a,b);
end
function func2_son2(a,b)
print("son2",a,b);
end
return func2_son1,func2_son2,
func1,
function (a,b)
print(a,b);
end
;
end
local fun1,fun2,fun3,fun4=func2();
fun2("123",789);
fun1("ddd",111);
fun3("ooo",333);
fun4("yyy",444);
运行结果:
Lua
son2 123 789
son1 ddd 111
func1 ooo 333
yyy 444
4.数组table中的function
Lua
function func1(a,b)
print("func1",a,b);
end
t1={
t1_func1=func1,
add=function (a,b)
return a+b;
end
};
t1.jian=function (a,b)
return (a-b);
end
t1["chu"]=function (a,b)
return(a*b);
end
t1.t1_func1("1111",890);
t1["t1_func1"]("222",666);
t1.t1_func1(t1.add(11,22));
t1.t1_func1(t1.jian(22,11));
t1.t1_func1(t1["chu"](3,4));
运行结果:
Lua
func1 1111 890
func1 222 666
func1 33 nil
func1 11 nil
func1 12 nil