• Lua 多返回值


    Lua这门神奇的语言可以在函数里面返回多个值具体函数如下

    function multi_return()
     return 2,"hellow world"
    end
    local a , b = multi_return();--多个都返回
    print(a,b)
    
    local m = multi_return();--默认返回第一个返回值
    print(m)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    unpack函数

    local array_data ={1,2,3,4,5}
    local _,_,a,b,_ = unpack(array_data)
    --解开array_data里面的数据
    
    • 1
    • 2
    • 3

    类似于import引用或者 c#里面的using,lua引用脚本使用require

    require("math_func")
    require "math_func"
    --脚本可以添加返回值
    return "hellow world"
    local hellow=require("math_func")
    --多次require会装载一次 多次装载返回值跟第一次一样
    --装载后即可直接调用函数
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    可以以表的形式返回类

    -- local关键字修饰的函数只能在这个模块内部使用
    local function _test_func( ... )
    	print("_test_func")
    	print(device.get_device_name())
    end
    
    function math_abs(value)
    	if (value < 0) then 
    		return -value
    	end
    
    	return value
    end
    
    function math_vec_length_2(vec)
    	return vec.x * vec.x + vec.y * vec.y
    end
    
    -- 其他的功能函数......
    print("math func loading#####")
    _test_func()
    --函数,会分为内部函数,和接口函数;
    --为了方便我们的用户使用和管理
    --模块的接口函数给他统一的导出来;
    
    --做了一个表,把我们的接口函数设置到这个表里
    local list = {
    	abs = math_abs,
    	lenth = math_vec_length_2,
    	test_func = _test_func,
    }
    return list
    
    --下面为调用逻辑
    local math_func = require("math_func")
    -- require的返回值到底是什么呢?
    print(math_func)
    
    --如果一个lua代码被require多次会发生什么样的事情;
    --require只会装载执行lua代码一次,
    --local ret =  require("math_func")
    --多次require只会装载和执行一次lua脚本,但是第二次require的时候
    --会发现前面已经装载过了,所以直接返回第一次装载的返回值;
    -- print(ret)
    --end
    
    -- 怎么在其他的文件里面使用lua的函数呢?
    local ret = math_abs(-4)
    ret = math_vec_length_2({x = 3, y = 4})
    print(ret)
    
    ret = math_func.abs(-8) 
    print(ret)
    
    math_func.test_func()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    module函数让类可以作为全局可以找到的模块

    module("lessons", package.seeall) --声明后就内部函数可以作为全局使用只需引用一次
    function getLessonName()
     return "math"
    end
    --外面调用
    local name = device.get_device_name()
    print(name)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    阿里云/腾讯云国际站代理:国际腾讯云的优势
    点击化学DBCO-PEG-FITC|二苯并环辛炔-聚乙二醇-异硫氰基荧光素
    深入分析JVM执行引擎
    Pandas+Pyecharts | 2022年世界500强数据分析可视化
    【操作系统】1.3.2 中断和异常
    聚星文社怎么下载聚星文社ai工具安装教程
    Kotlin第八弹:Kotlin扩展
    Qt QPair
    js中的设计模式之代理模式
    Geoffrey Hinton:我的五十年深度学习生涯与研究心法
  • 原文地址:https://blog.csdn.net/u011048906/article/details/132945277