Lua:如何将自己写的模块加入环境中

这里主要介绍使用require将自己写的lua模块加入到环境中。

我使用的是luastudio来编写的脚本,当然其他的编辑器都可以的。lua提供了require函数来加载运行库。它和dofile完成了相同的功能,但是有如下的不同:
1.require会搜索目录来加载文件
2.require不会重复的加载同一个模块
require的路径是一个模式列表,使用提供给require的虚文件名去替换模式里的问号,看这样的文件是否存在;不存在就换第二个模式尝试匹配…。所以为了让require能找到我们自己写的lua 模块我们需要把该模块的路径加入到LUA_PATH中(luastudio 是package.path)。例如我想将指定目录下的所有lua文件都能被require搜索到,我会如下这样做:
package.path = package.path .. ";H:\\luaWorkspace\\tst01\\?lua"
lua里有一个table保持所有加载过文件的列表。在luastudio这儿是package.loaded。所以可以查看loaded表里是否有所要加载的文件名来判断是否加载成功了我们想要加载的文件。
下面就用一个实例来说明如果将自己写的模块加入环境中

--Comp.lua
--require加载文件时会将文件名传给所加载的文件,
local moduleName = ...


local M = {}
_G[ moduleName ] = M
package.loaded[ moduleName ] = M

function M.new( r, i )
    return { r=r, i=i }
end

M.i = M.new( 0 , 1 )

function M.add( c1, c2 )
    return M.new( c1.r + c2.r, c1.i + c2.i )
end

function M.sub( c1, c2 )
    return M.new( c1.r - c2.r, c1.i - c2.i )
end


--test.lua

local ProjectPath = ";H:\\luaWorkspace\\tst01\\?.lua"
package.path =  package.path .. ProjectPath


require "Comp"

local c1 = Comp.new( 1, 2 )
local c2 = Comp.new( 3, 4 )
local c3 = Comp.add( c1, c2 )
print( c3.r .. " , " .. c3.i )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值