lua 多返回值 require 模块


lua多返回值与unpack

1: 一个lua函数可以返回多个返回值:

2: 定义多个变量来接受多返回值

3: lua的unpack函数,解开表里的单个的值;


-- 一个函数可以有多个返回值
function mul_return_func()
return 3 , "Hello World" --多返回值
end


local first, second = mul_return_func() --多返回值接收
print(first, second)


local first_2 = mul_return_func() --多返回值接收 只接受第一个参数返回值
print(first_2)


--unpack函数
local array_data = { 1, 2, 3, 4, 5, 6}
local _, _, _, lhs, rhs = unpack(array_data); -- _, 表示不用的变量表示,把表里面的数据拆开赋值
print(lhs,rhs)


print( '---------------------------')

require 导入代码   module与package

1: 第一个代码是有lua虚拟机第一个解释执行的lua文件;
2: 第一个lua文件可以去包含和导入其他的lua文件;
    使用require关键字来导入其他lua
3: require的时候就会装载lua文件,并执行lua代码;
    require “./test” // 不用文件的后缀名;
    require “文件夹/lua文件名”;
    require “文件夹.lua文件名”;
4: lua 代码中的 return  语句:
    require “lua代码” 执行的时候如果有return 语句,那么require就返回return的对象;
5: lua导出函数:
      将lua代码要到处的函数,做成一个表,把这个表返回出去;


6: 如果在其他的地方使用又要装载一次;

7: 如果require过了的lua代码,直接返回返回值,不再装载代码并执行;

----math_func.lua

--------------------math_func.lua---------------------------------

-- local 关键字修饰的函数,只能在模块内部使用
local function _test_func( value)
print( "local test func")
end



local function math_abs( value)
if (value < 0) then
return -value
end
return value
end


local function math_vec_len( vec)
return vec. x * vec. x + vec. y * vec. y
end


print( "math func loading")

--函数分为内部函数 和 接口函数
-- 模块的接口函数 ,统一的导出来


local list = {
abs = math_abs,
len = math_vec_len,
}
return list



-- require导入代码

--lua虚拟机加载第一个lua脚本执行,代码不可能都写到一个脚本,
--把功能的相同的代码放到一起
--方便代码维护,叫做代码模块

--require 来加载我们的代码
-- require("math_func")

--require "math_func" --两种写法都可以



local math_func = require( "math_func")
require( "math_func")
require( "math_func")




-- 如果一个lua代码被require多次,也只会装载执行一次



local ret = math_func. abs(- 100)
print(ret)
ret = math_func. len({x = 3, y = 4})
print(ret)
-- end



--ret = _test_func(4)




require( "device")
require( "test")

1: 默认情况下lua代码编写的函数是不能被外部识别的;
2: 包: module(包名, package.seeall)
3: 外部 require 包名
    require “包名”

4: 全局require模块后,其他的lua文件无需再去require了,方便使用;

-------------device.lua

--调用module函数,让他做成全局的可以找到的模块
--全局模块

module( "device",package. seeall)


function get_device_name()
return "guest5927"
end




----test.lua

require( "math_func")

local name = device. get_device_name()
print(name)


猜你喜欢

转载自blog.csdn.net/qq_28710983/article/details/80636419
今日推荐