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
相关推荐
Franciz小测测5 分钟前
Python连接RabbitMQ三大方案全解析
开发语言·后端·ruby
代码雕刻家18 分钟前
C语言的左对齐符号-
c语言·开发语言
小肖爱笑不爱笑20 分钟前
2025/11/19 网络编程
java·运维·服务器·开发语言·计算机网络
郑州光合科技余经理39 分钟前
开发指南:海外版外卖跑腿系统源码解析与定制
java·开发语言·mysql·spring cloud·uni-app·php·深度优先
星释1 小时前
Rust 练习册 44:Trait 中的同名函数调用
开发语言·后端·rust
fanruitian1 小时前
Java 静态代码块
java·开发语言
lly2024062 小时前
SQL CREATE DATABASE
开发语言
朝九晚五ฺ2 小时前
深入Rust标准库(std):核心能力与实战指南
开发语言·后端·rust
2013编程爱好者2 小时前
Rust变量
开发语言·后端·rust
star learning white2 小时前
xmC语言8
c语言·开发语言·算法