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
相关推荐
Wenweno0o21 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming66621 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch891821 小时前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳1 天前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发1 天前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense1 天前
设计模式之工厂模式
java·开发语言·设计模式
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
STL 栈 队列
开发语言·c++
勿忘,瞬间1 天前
数据结构—顺序表
java·开发语言
张張4081 天前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_423533991 天前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python