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
相关推荐
阿巴~阿巴~4 小时前
线程局部存储(Thread-Local Storage, TLS)
linux·服务器·开发语言·c++·线程·虚拟地址空间·线程局部存储
初见无风4 小时前
2.4 Lua代码中table常用API
开发语言·lua·lua5.4
~无忧花开~4 小时前
掌握Axios:前端HTTP请求全攻略
开发语言·前端·学习·js
微知语4 小时前
悬垂引用的攻防战:Rust 如何从根源杜绝内存访问灾难
开发语言·算法·rust
txwtech5 小时前
第10篇 石墨盘自动插脚机视觉引导开发
开发语言·视觉
万能的小裴同学5 小时前
C++ 鸭科夫手柄适配
开发语言·c++·算法
想不明白的过度思考者5 小时前
Rust——或模式(Or Patterns)的语法:Rust模式匹配的优雅演进
开发语言·后端·rust·模式匹配
绵绵细雨中的乡音5 小时前
深入理解 Rust 的 LinkedList:双向链表的实践与思考
开发语言·链表·rust
dont worry about it5 小时前
使用亮数据爬虫API零门槛快速爬取Tiktok数据
开发语言·爬虫·python