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
相关推荐
keyipatience36 分钟前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao41 分钟前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
爱喝水的鱼丶1 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
脱胎换骨-军哥2 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust
songroom2 小时前
Kimi K3:Rust封装XTP接口详细教程实践
开发语言·后端·rust
kebeiovo2 小时前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
迷途呀2 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
Herbert_hwt3 小时前
建立Java程序开发
java·开发语言
愚公移码3 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮3 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库