2.6 Lua代码中function的常见用法

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
相关推荐
fpcc3 分钟前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
吾与谁归in5 分钟前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
昂好的day16 分钟前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]19 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot20 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人20 分钟前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯23 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
C^h9 小时前
c++ string
开发语言·c++
raindayinrain10 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的10 小时前
C++ 合并命名空间
开发语言·c++·网络安全